如何检查是否已创建类实例或为空C#

时间:2012-07-10 17:52:50

标签: c# class

如何检查classinstance是否已创建/初始化或null

private MyClass myclass;

if(!check class has been initialised)      //<- What would that check be?
    myclass = new MyClass();

提前致谢

4 个答案:

答案 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; }
        }
    }