我想知道以下内容之间的区别。
Difference between Session("foo") is "test" and Cstr(Session("foo")) = "test"
我理解第二个是转换为字符串。当我尝试时,我没有得到的是一页,
if Session("foo") is "test" Then
Do something
这在一个页面上工作。在某些页面上,即使Session(“foo”)是“test”,也不会执行某些操作。另一方面,Cstr(Session(“foo”))=“test”始终有效。为什么会有区别。其中哪两个更适合惯例?
答案 0 :(得分:1)
Session的返回类型是Object。
Is运算符比较两个对象的对象引用。
=运算符比较存储在两个对象中的值。
由于您要检查会话是否具有特定名称,您想要比较两个字符串的值,您需要使用=运算符。
当您使用Is运算符比较对象引用时,它会检查两个引用是否指向同一个字符串实例。但是,如果比较两个单独的对象实例,即使两个实例包含相同的字符串值,Is也会评估为false。
答案 1 :(得分:1)
是运算符确定两个对象引用是否引用同一对象。但是,它不执行值比较。如果object1和object2都引用完全相同的对象实例,则结果为True;如果他们不这样做,结果就是假的。 Ref
因此,在您需要将Session的对象转换为字符串之前,需要将其与另一个字符串值类型进行比较。
回答您的下一个问题
您可以在页面中设置属性,而不是在页面上多次重复该代码,如下所示:
Public Property MyValue() As String
Get
Return Session("MyValue").ToString()
End Get
Set
Session("MyValue") = value
End Set
End Property
现在您可以在页面内的任何位置设置和获取此值,如下所示:
MyValue = "This is my value" 'set a value
Dim message As String = MyValue 'get a value