你如何检查是否classinstance
已经创建/初始化或者是null
?
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
.
顺便说一句,在类范围内声明的对象会被编译器自动初始化为 null,所以你的行:
private MyClass myclass;
是相同的
private MyClass myclass = null;
在方法中声明的对象被强制分配一些初始值(即使该初始值为空)。
if (myclass == null)
myclass = new MyClass();
你可以使用这个结构来避免检查
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; }
}
}
如果您希望将类限制为单个实例,请查看 Singleton 设计模式:http: //msdn.microsoft.com/en-us/library/ff650316.aspx