4

classinstance作成/初期化されているかどうか、または作成されているかどうかをどのように確認しますnullか?

private MyClass myclass;

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

前もって感謝します

4

4 に答える 4

15

nullかどうかを確認してください

if (myclass == null)

あなたのコメントで述べたように、

if (myclass.Equals(null)) 

myclassがnullの場合、次のように変換されるため、機能しません。

if (null.Equals(null))

これはにつながりNullReferenceExceptionます。

ちなみに、クラススコープで宣言されたオブジェクトは、コンパイラによって自動的にnullに初期化されるため、次のようになります。

private MyClass myclass;

と同じです

private MyClass myclass = null;

メソッドで宣言されたオブジェクトには、(その初期値がnullであっても)何らかの初期値が強制的に割り当てられます。

于 2012-07-10T17:54:06.327 に答える
2
if (myclass == null)
    myclass = new MyClass();
于 2012-07-10T17:54:58.023 に答える
0

クラスを単一のインスタンスに制限する場合は、シングルトンデザインパターンを参照してください:http://msdn.microsoft.com/en-us/library/ff650316.aspx

于 2012-07-10T17:59:20.270 に答える
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 に答える