2017-05-24 3 views
-1
  • 私は静的なGameというパブリッククラスを持っています。C#オブジェクトはインスタンス化されてもnullを指していますか?

  • クラスで私は2つのプライベートポインタ変数カードと手[]を持っています。

  • クラスでは、2つのポインタをインスタンス化してクラスインスタンスオブジェクトをポイントするstatic game()メソッドもあります。

    問題:ビジュアルスタジオでプロパティ/ポインタに緑色の下線が表示され、デバッグ時にオブジェクトがヌルであることが示されています。わかりません? `

    System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。'

    public static class Game { 
        private static Card card; 
        private static Hand[] hands; 
    
        public static void Game() { 
    
         Card card = new Card(true); 
         Hand[] hands = new Hand[2]; 
        } 
    } 
    

    `

    +4

    フィールドを隠している地方の 'card'と' hands'を定義しています。 –

    答えて

    1

    Card card = ...カードと呼ばれるローカル変数を作成します。クラスレベルの「カード」には何もしません。あなたは名前が囲む型と同じである静的メソッドを持つことができないよう

    変更

    Card card = new Card(true); 
    Hand[] hands = new Hand[2]; 
    

    card = new Card(true); 
    hands = new Hand[2]; 
    
    4

    まずに、あなたのコードは、コンパイルされません。

    ただし、静的コンストラクタを使用しようとしているとします。その場合、メソッドレベル変数はcardhandsと宣言しています。クラスメンバーフィールドを使用する場合は、変数を割り当てるときに型を含めないでください。例:

    static Game() 
    { 
        card = new Card(true); 
        hands = new Hand[2]; 
    } 
    
    関連する問題