如何确定对象引用是否为null?

13

如何最好地确定一个对象引用变量是否为null

以下代码是正确的吗?

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

如果你想要默认值,你可以这样做:MyObject obj = myObjVar ?? DefaultObjVar - Mohamed Nuur
5个回答

10

是的,你是正确的,如果你想执行任意代码,以下代码片段就是最好的选择:

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

顺便说一下:您的代码现在无法编译,因为访问了尚未初始化的myObjVar


8

您可以使用Object.ReferenceEquals函数

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

如果myObjVar为空,则会返回true。

2
如果您想要覆盖对象的“==”运算符,这将非常有用。 - mac10688
如果你想要在==的实现中测试null,那么我认为Object.ReferenceEquals是必不可少的。 - bronzenose

7
你目前的做法是最好的方式。
if (myObjVar == null)
{
    // do stuff
}

但是,您可以使用空值合并运算符??进行检查,并分配一些内容

var obj  = myObjVar ?? new MyObject();

4
我认为空值合并运算符是在C# 2中引入的。 - TheEvilPenguin

3

您可以:

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

2
为什么需要两个if语句? - Joshua Duxbury

0
在C# 7.0中,您可以使用"is null":
MyObject myObjVar = null;
if (myObjVar is null)
{
    // do stuff
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接