如何检查classinstance
是否已创建/初始化或null
?
private MyClass myclass;
if(!check class has been initialised) //<- What would that check be?
myclass = new MyClass();
提前致谢
答案 0 :(得分:14)
检查它是否为空
if (myclass == null)
正如您的评论所述,
if (myclass.Equals(null))
将无效,因为如果myclass为null,则转换为
if (null.Equals(null))
会导致NullReferenceException
。
顺便说一下,类范围中声明的对象会被编译器自动初始化为null,所以你的行:
private MyClass myclass;
与
相同private MyClass myclass = null;
强制在方法中声明的对象被赋予一些初始值(即使该初始值为null)。
答案 1 :(得分:2)
if (myclass == null)
myclass = new MyClass();
答案 2 :(得分:0)
如果您希望将类限制为单个实例,请查看Singleton设计模式:http://msdn.microsoft.com/en-us/library/ff650316.aspx
答案 3 :(得分: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; }
}
}