2012-08-17 65 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