2012-07-10 89 views
2

如何檢查是否已創建/初始化classinstance或者是否爲null如何檢查類實例是否已創建或爲空C#

private MyClass myclass; 

if(!check class has been initialised)  //<- What would that check be? 
    myclass = new MyClass(); 

在此先感謝

+1

我注意到你已經將這個問題標記爲涉及ASP.Net。由於這個事實,這個問題還有一些額外的詭計嗎? – dlev 2012-07-10 17:56:03

+0

是這功課嗎?如果是這樣,請將它重新標記爲 – 2012-07-10 17:57:12

+0

@MicahArmantrout不,我只是使用'myclass.Equals(null)'拋出異常,但我沒有嘗試簡單的'=='。 – James 2012-07-10 17:59:08

回答

13

就檢查它是否是空

if (myclass == null) 

正如您的評論中提到,

if (myclass.Equals(null)) 

如果MyClass的是空不會因爲工作,這是翻譯爲

if (null.Equals(null)) 

這導致NullReferenceException

順便說一句,在類範圍內聲明的對象是由編譯器自動初始化爲空,所以你的行:

private MyClass myclass; 

相同的方法聲明

private MyClass myclass = null; 

對象是被迫分配一些初始值(即使該初始值爲空)。

+0

是的,工作,謝謝。我使用'myclass.Equals(null)'這不起作用。 – James 2012-07-10 17:55:55

+1

正確。它沒有工作,因爲myclass爲null,而null.Equals(null)應該給出一個NullReferenceException :-) – 2012-07-10 17:56:28

+0

的確如此:) – James 2012-07-10 17:57:09

2
if (myclass == null) 
    myclass = new MyClass(); 
0

您可以使用此結構爲避免檢查

public class SomeClass 
    { 
     private MyClass _myClass; 
     public MyClass MyClass 
     { 
      get { return _myClass ?? (_myClass = new MyClass()); } 
      set { _myClass = value; } 
     } 
    } 

    public class SomeClass 
    { 
     private readonly MyClass _myClass = new MyClass(); 
     public MyClass MyClass 
     { 
      get { return _myClass; } 
     } 
    } 
相關問題