如何檢查是否已創建/初始化classinstance
或者是否爲null
?如何檢查類實例是否已創建或爲空C#
private MyClass myclass;
if(!check class has been initialised) //<- What would that check be?
myclass = new MyClass();
在此先感謝
如何檢查是否已創建/初始化classinstance
或者是否爲null
?如何檢查類實例是否已創建或爲空C#
private MyClass myclass;
if(!check class has been initialised) //<- What would that check be?
myclass = new MyClass();
在此先感謝
就檢查它是否是空
if (myclass == null)
正如您的評論中提到,
if (myclass.Equals(null))
如果MyClass的是空不會因爲工作,這是翻譯爲
if (null.Equals(null))
這導致NullReferenceException
。
順便說一句,在類範圍內聲明的對象是由編譯器自動初始化爲空,所以你的行:
private MyClass myclass;
相同的方法聲明
private MyClass myclass = null;
對象是被迫分配一些初始值(即使該初始值爲空)。
if (myclass == null)
myclass = new MyClass();
如果您正在尋找限制類的單一實例,看看Singleton設計模式:http://msdn.microsoft.com/en-us/library/ff650316.aspx
您可以使用此結構爲避免檢查
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; }
}
}
我注意到你已經將這個問題標記爲涉及ASP.Net。由於這個事實,這個問題還有一些額外的詭計嗎? – dlev 2012-07-10 17:56:03
是這功課嗎?如果是這樣,請將它重新標記爲 – 2012-07-10 17:57:12
@MicahArmantrout不,我只是使用'myclass.Equals(null)'拋出異常,但我沒有嘗試簡單的'=='。 – James 2012-07-10 17:59:08