Session(" foo")之间的差异是" test"和Cstr(会话(" foo")="测试"

时间:2014-07-01 02:17:30

标签: asp.net vb.net

我想知道以下内容之间的区别。

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”始终有效。为什么会有区别。其中哪两个更适合惯例?

2 个答案:

答案 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