以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]Nothing  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=53489)

--  作者:wyz20130512
--  发布时间:2014/7/9 10:22:00
--  [讨论]Nothing
变量名 Is Nothing
变量名 = Nothing
这二者有什么区别和相同点?
请大神指教。


--  作者:有点甜
--  发布时间:2014/7/9 10:24:00
--  

 一样的。

 

 is nothing 在引用类型中使用,比如 datarow 比如 row

 

 = nothing 在值类型中使用,比如 string、integer、date


--  作者:Bin
--  发布时间:2014/7/9 10:24:00
--  
=nothing 只能用于值判断

例如 Dim l As List(of String)

只能用 l is nothing 来判断

--  作者:wyz20130512
--  发布时间:2014/7/9 10:31:00
--  回复:(有点甜) 一样的。  is n...
Dim d1 As Date
If d1 Is Nothing Then
    MessageBox.Show("日期d1的值为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    Output.Show("d1的值是: " & d1)
End If

上面代码会报错,Is换成=又能正常执行,且返回的结果是If后的第一条语句,不是说Date类型的变量不赋值时,其初值不为空吗?

--  作者:有点甜
--  发布时间:2014/7/9 10:32:00
--  
 看2楼,date是值类型。要用 =
--  作者:wyz20130512
--  发布时间:2014/7/9 10:40:00
--  回复:(有点甜) 看2楼,date是值类型。要用 = ...
Dim str As String
If str Is Nothing Then
    MessageBox.Show("字符串str的值为空!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    Output.Show("str的值是: " & str)
End If

那为何将数据类型换为String,同样是Is,却又能正常执行,不报错呢?

--  作者:有点甜
--  发布时间:2014/7/9 10:44:00
--  

 String是特殊类型,既是值类型又是引用类型


--  作者:wyz20130512
--  发布时间:2014/7/9 12:23:00
--  回复:(有点甜) String是特殊类型,既是值类型...
 哦!明白了,谢谢!除了String外,还有哪些即是值类型也是引用类型的呢?
--  作者:Bin
--  发布时间:2014/7/9 14:13:00
--  
没了.