如何检查是否已创建/初始化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