4

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

private MyClass myclass;

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

提前致谢

4

4 回答 4

15

只需检查它是否为空

if (myclass == null)

正如您在评论中提到的,

if (myclass.Equals(null)) 

将不起作用,因为如果 myclass 为空,则将其转换为

if (null.Equals(null))

这导致NullReferenceException.

顺便说一句,在类范围内声明的对象会被编译器自动初始化为 null,所以你的行:

private MyClass myclass;

是相同的

private MyClass myclass = null;

在方法中声明的对象被强制分配一些初始值(即使该初始值为空)。

于 2012-07-10T17:54:06.327 回答
2
if (myclass == null)
    myclass = new MyClass();
于 2012-07-10T17:54:58.023 回答
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; }
        }
    }
于 2012-07-10T18:10:33.893 回答
0

如果您希望将类限制为单个实例,请查看 Singleton 设计模式:http: //msdn.microsoft.com/en-us/library/ff650316.aspx

于 2012-07-10T17:59:20.270 回答