当前位置:  开发笔记 > 编程语言 > 正文

条件之间的差异

如何解决《条件之间的差异》经验,为你挑选了1个好方法。

只是想知道是否有人可以解释这两个条件之间的区别:

if ( !object ) 

if ( object == null )

where object is an instance of a user-defined class.

我敢肯定这两个不能以可互换的方式使用,或者是吗?

谢谢.



1> Juan Pablo C..:

效果在实践中是相同的,所以我猜你可以说它们是可以互换的.

在布尔上下文(例如条件)中,表达式被计算为true或false.

在Actionscript 3.0中,以下值计算为false:

空值

0

为NaN

""(空字符串)

未定义

空虚

其他一切评估为真.

对用户定义的类实例的引用可以为null或不为null.

所以,在这种情况下:

if ( object == null )

显然,仅当object为null时才满足条件.

在另一个案例中:

if ( !object )

object如果object是,表达式将评估为false null.如果是null,则表达式为false.由于这反过来被否定,最终值将为真,因此将满足条件.因此,就像第一种情况一样,如果object为null,则满足条件.和第一种情况一样,如果object不为null,则不满足条件.

如果您的变量被输入到用户定义的类,则没有其他选项; 这样的变量只能包含有效的引用或null; 即,除了null之外,它不能在布尔上下文中保存任何可评估为false的值; 所以,再次,它是null或非null.这就是为什么两个代码示例具有相同的效果.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有