加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp-classic – ASP会话变量:是否与IsEmpty相同?

发布时间:2020-12-16 09:56:17 所属栏目:asp.Net 来源:网络整理
导读:在ASP中,未初始化的Session变量为Empty.我知道检查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("myVa
在ASP中,未初始化的Session变量为Empty.我知道检查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

我继承了一个代码库,其中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

或者我应该重构代码库,以便:

>确定是否已设置Session变量的所有测试都是IsEmpty(Session(“myVar”))形式
>所有会话变量都已删除而未设置=“”?

解决方法

空是一种奇怪的野兽:它同时等于“”和0.严重的是,尝试一下:

dim x,y,z
x = Empty
y = ""
z = 0
Response.Write (x = y) AND (x = z)

它会写出“真实”.

这意味着对Not IsEmpty(myvar)的测试等同于测试myvar<> “”,但IsEmpty(myvar)不等同于myvar =“”.理论上的差异是否会让你感到困扰只是你能回答的问题,但就个人而言,我不会浪费时间在重构上.

如果你决定重构,我建议忘记IsEmpty和IsNull等等,并且只使用& “”黑客“:

If Session("myvar") & "" <> "" Then

这将透明地处理Nulls和Empties,而无需编写大量代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读