2012-07-10 63 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; } 
     } 
    } 
相关问题