2013-08-21 100 views
2

我對編程相對比較陌生,我正在學習C#並在Unity3D中將它用於遊戲開發,並且我有一個關於如果可能的話,在if語句中如何避免NullReferenceExceptions時詢問變量是否是等於變量爲空時的東西。在if語句中避免NullReferenceException?

我有這個if語句,用於檢查raycast命中的gameObject是否等於某個特定名稱,如果你要壓入skybox的void中,該對象當然會返回null,這會導致NullReferenceException異常。

我只是想知道,它甚至值得儘量避免,儘管它根本不影響任何東西,但這對我來說只是有點令人不安。

這是if語句,

if (Input.GetButtonDown ("Fire1") && rayhit.transform.name == "Reflector") 
     { 

     } 
+0

object.Equals(a,b)可以正確處理參數中的空值。 – Sander

+0

感謝大家的回答,雖然我不想知道如何去做,但我不是*新的,我只是想知道我是否應該打擾。 – user2690614

+0

嗯,這對我來說很奇怪,當它爲空時只是指這個變量導致NullReferenceException,意思是詢問它是否等於或者不等於null導致一個,我不明白? – user2690614

回答

1
String myValue= null 

if(myValue != null && myValue.equal("value")) 
{ 
//Do something 
} 
0

,這樣它會檢查你可以寫你的情況,如果該對象爲null第一

例如

if(myvar != null && /* your condition */){ 
    //do stuff 
} 

/* your condition */部分如果第一個條件失敗將不會執行

+0

修復你的代碼請 –

+0

修復它,沒有想法名稱 – amdorra

+0

我看到你的陳述沒有「)」 –

1

我認爲你應該避免例外。它速度更快,因爲異常會花費大量的處理時間,並且對於我來說,讀取代碼更容易,至少在您使用if語句而不是try-catch語句時。

對於您的示例,您可以在執行equal方法之前做if(skybox != null)以避免發生異常。

Here你可以閱讀「爲什麼你應該避免例外」。他們使你的思維複雜化,使代碼複雜化,並使調試成爲一場噩夢。