VB.NET中’foo = Nothing’和’foo is Nothing’有什么区别?
在
VB.NET,有什么区别
if foo is Nothing Then doStuff() End If 和 if foo=Nothing Then doStuff() End If 更新我收到以下答案:
运行三个语句后, Dim foo as Object Dim bar as Integer foo = bar foo是Nothing的计算结果为false,而foo = Nothing的计算结果为true. 但是,如果bar被声明为Object而未初始化,则foo为Nothing,foo = Nothing都为true!我认为这是因为Integer是一个值类型而Object是一个引用类型.
这取决于类型.
>对于值类型,Is不起作用,只有=,Nothing引用该类型的默认实例(即通过为给定类型T调用New T()获得的实例). 此外,如果Operator =已经正确实现,那么foo = Nothing和foo Is Nothing应该产生相同的结果(但是对于任何其他值而不是Nothing都是如此)但是foo是没有什么会更有效,因为它是当运算符=将调用方法时编译器内在.
因此,如果用户想要将Nullable变量与Nothing进行比较,则必须使用foo Is Nothing语法,编译器再次生成特殊代码以使其工作(Visual Basic 10语言规范的§1.79.3). (上面假设使用了Option Strict On,因为你总是应该这样.如果不是这种情况,结果会略有不同,因为调用foo = Nothing可能会执行后期绑定调用.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |