2012-08-17 68 views
13

确定对象引用变量是否为null的最佳方法是什么?如何确定对象引用是否为空?

下面是它吗?

MyObject myObjVar = null; 
if (myObjVar == null) 
{ 
    // do stuff 
} 
+3

而不是什么? – 2012-08-17 05:28:57

+1

@MichaelPetrotta:这就是我问这个问题的原因吗?有没有更好的选择? – CJ7 2012-08-17 05:29:39

+0

如果你想默认的东西,你总是可以做'MyObject obj = myObjVar ?? DefaultObjVar' – 2012-08-17 05:30:35

回答

10

是的,你是对的,下面的片段是去,如果你想执行任意代码的方式:

MyObject myObjVar; 
if (myObjVar == null) 
{ 
    // do stuff 
} 

顺便说一句:您的代码将无法编译,现在是这样的,因为myObjVar在被初始化之前被访问。

+0

@DanielHilgarth,绝对正确,只是测试它,它不应该编译 – Habib 2012-08-17 05:36:22

6

你正在做的方式是最好的方式

if (myObjVar == null) 
{ 
    // do stuff 
} 

但你可以使用null-coalescing operator??检查,以及分配的东西

var obj = myObjVar ?? new MyObject(); 
+4

我认为null-coalescing运算符是在C#2中引入的 – TheEvilPenguin 2012-08-17 05:32:14

+1

@TheEvilPenguin,你说得对,修改我的答案 – Habib 2012-08-17 05:37:24

3

,您可以:

MyObject myObjVar = MethodThatMayOrMayNotReturnNull(); 
if (if (Object.ReferenceEquals(null, myObjVar)) 
{ 
    // do stuff 
} 
+2

为什么需要两个if语句? – 2016-02-02 13:09:06

7

您可以使用Object。 ReferenceEquals

if (Object.ReferenceEquals(null, myObjVar)) 
{ 
    ....... 
} 

如果myObjVar为null,则返回true。

+2

如果您想覆盖对象的==运算符,这很有用。 – mac10688 2015-10-22 14:51:16