送分100分:NULL,Empty和空字符串的区别
看到有关资料上有如下说明:
Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 ("") 也不同,零长度字符串往往指的是空串。
现有以下几个问题:
(1)Null 值指出变量不包含有效数据,什么是其所谓的有效数据
(2)Empty 变量未经初始化,什么是变量的初始化,根据什么判断此变量是否初始化。
(3)零长度字符串与NULL到底有什么区别。
[解决办法]
VB中的IsNull和IsEmpty用于Variant变量时才有意义,不过Null和空也经常与字符串变量用在一起。
先说字符串:当我们声量了一个字符串变量并且未对它赋值之前,它是Null。在VB中字符串变量实质上是一个指针变量。也就是说这时候指针为零。对于已经赋值的字符串,也可以把它变成Null,如str=VBNullString.当我们这样赋值时:str="",它就是“空”了。这时时候,指针已经不是零了,它已经指向了一个数据区,但这个数据区没有包含字符。大体上可以这样理解。
再说Variant.当我们声量了一个,如var as Variant;这是它是Empty(未初始化),用IsEmpty测试是true;当我们为它赋值以后,var="abc";这时它非empty非null.如果我们不想要这个字符串了,可以这样:var=null.这就叫做Null(未含有有效数据)。
[解决办法]
1楼讲字符串变量的初始化时敲太块敲错了:
声明一个字符串变量时,它的默认初始值就是"",即vbNullString,不存在为Null的情况.相反,如想对一个字符串变量赋Null值是会报错的,所以在楼主的上一个问题帖中我才给了它一个函数AsString
http://topic.csdn.net/u/20100302/16/e9c7dbd5-27bf-43a7-a349-d35822bdb912.html
注意:
VB6中
Const vbNullString = ""
VBA.Constants 的成员
[解决办法]
4楼如果经常用API的话,对StrPtr这个函数应该不陌生,你试下以面的代码:
Dim str As String
str = ""
Debug.Print StrPtr(str)
str = vbNullString
Debug.Print StrPtr(str)
就知道我的话是不错的
[解决办法]
我承认我事先不清楚字符串变量s为vbNullString时StrPtr(s)的值是0,不过这不影响我在4楼说的结论
[解决办法]
又想了下5楼的代码,我在4楼给出的修正的说明也要修正一下:
1楼讲字符串变量的初始化时敲太块敲错了:
声明一个字符串变量时,它的默认初始值就是vbNullString,在VB中所起的功能和""相同,vbNullString的实现是一个零指针,更省资源,应尽量使用它. 注意,不存在字符串变量值为Null的情况.相反,如想对一个字符串变量赋Null值是会报错的,所以在楼主的上一个问题帖中我才给了它一个函数AsString
http://topic.csdn.net/u/20100302/16/e9c7dbd5-27bf-43a7-a349-d35822bdb912.html
注意:
VB6中
Const vbNullString = ""
VBA.Constants 的成员
[解决办法]
你是太相信表面看到的东西了,因为vbnullstring是无法显示的,所以你在对象浏览器中看到的是;
vbNullString="".也可以看到这个vbTab="" 难首vbNullstring和vbTab一样吗?
[解决办法]
之所以大家经常以为""和vbNullString一样,是因为在一般的应用中,看不出这样两者有差别。比如在比较时str=""和str1=vbNullstring;str和str1是相等的.len返回的都是零。
[解决办法]
IsNull 函数
返回 Boolean 值,指出表达式是否不包含任何有效数据 (Null)。
语法
IsNull(expression)
必要的 expression 参数是一个 Variant,其中包含数值表达式或字符串表达式。
说明
如果 expression 为 Null,则 IsNull 返回 True;否则 IsNull 返回 False。如果 expression 由多个变量组成,则表达式的任何作为变量组成成分的 Null 都会使整个表达式返回 True。
Null 值指出 Variant 不包含有效数据。Null 与 Empty 不同,后者指出变量尚未初始化。Null 与长度为零的字符串 (““) 也不同,长度为零的字符串指的是空串。
重要 使用 IsNull 函数是为了确定表达式是否包含 Null 值的。在某些情况下,希望表达式取值为 True,比如希望 If Var = Null 和 If Var <> Null 取值为 True,而它们总取值为 False。这是因为任何包含 Null 的表达式本身就是 Null,所以为 False。
[解决办法]
IsEmpty 函数
返回 Boolean 值,指出变量是否已经初始化。
语法
IsEmpty(expression)
必要的 expression 参数是一个 Variant,包含一个数值或字符串表达式。但是,因为 IsEmpty 被用来确定个别变量是否已初始化,所以 expression 参数通常是单一变量名。
说明
如果变量未初始化或已明确设置为 Empty,则 IsEmpty 返回 True;否则返回 False。如果 expression 含有多个变量,则 IsEmpty 总是返回 False。IsEmpty 只返回对 variant 表达式有意义的信息。
送分100分:NULL,Empty和空字符串的区别解决方案
送分100分:NULL,Empty和空字符串的区别看到有关资料上有如下说明:Null 值指出变量不包含有效数据。Null 与
