fee*_*wet 5 session-variables asp-classic defaultifempty is-empty
在 ASP 中,未初始化的会话变量为空。我知道检查 Session 值和删除值的正确方法如下:
IF NOT IsEmpty(Session("myVar")) THEN
' Go ahead and use Session("myVar")
...
' Now if we're all done with myVar then remove it:
Session.Contents.Remove("myVar")
END IF
Run Code Online (Sandbox Code Playgroud)
我继承了一个代码库,其中 Application 和 Session 变量通常= ""在使用后设置,并且对值的所有测试都采用(Sessions("myVar") = ""). 当 Session 变量没有被声明时,这个测试似乎有效......或者它可能只是靠运气。
使用与空字符串的比较来测试 Session 变量是否安全?即,以下“实际上和上面显示的正确方法一样好”吗?
IF Session("myVar") <> "" THEN
' Go ahead and use Session("myVar")
...
' Now if we're all done with myVar then blank it:
Session("myVar") = ""
END IF
Run Code Online (Sandbox Code Playgroud)
或者我应该重构代码库,以便:
IsEmpty(Session("myVar"))Removed 而不是 set = ""?Empty是一个奇怪的野兽:它同时等于""和0。说真的,尝试一下:
dim x, y, z
x = Empty
y = ""
z = 0
Response.Write (x = y) AND (x = z)
Run Code Online (Sandbox Code Playgroud)
它会写出“True”。
这意味着测试 forNot IsEmpty(myvar)等同于测试myvar <> "",但IsEmpty(myvar)不等同于myvar = ""。无论这种主要理论上的差异是否困扰您,只有您可以回答,但就我个人而言,我不会浪费时间进行重构。
如果您确实决定重构,我建议忘记IsEmpty以及IsNull诸如此类的事情,而只使用& ""“hack”:
If Session("myvar") & "" <> "" Then
Run Code Online (Sandbox Code Playgroud)
这将透明地处理 Null和Empties,而无需您编写一大堆代码。
| 归档时间: |
|
| 查看次数: |
3871 次 |
| 最近记录: |