0

これが、PictureBox配列を実装しようとしている方法です。

    PictureBox[] column0 = new PictureBox[6];
    PictureBox[] column1 = new PictureBox[6];
    PictureBox[] column2 = new PictureBox[6];
    PictureBox[] column3 = new PictureBox[6];
    PictureBox[] column4 = new PictureBox[6];
    PictureBox[] column5 = new PictureBox[6];
    PictureBox[] column6 = new PictureBox[6];

    PictureBox[][] columns = 
            new PictureBox[][] 
            { column0, column1, column2, column3, column4, column5, column6 };

配列の配列を作成しようとすると、次のエラーが発生します。

フィールド初期化子は、非静的フィールドメソッドまたはプロパティ'Connect_Four_Server.Server.column0'を参照できません。

column1、column2などでも同じエラーが発生します。

この状況で配列の配列を正しく宣言するにはどうすればよいですか?

4

1 に答える 1

1

上記の宣言自体には何の問題もありませんが、クラスでフィールドを宣言している場合、そのように使用することはできません。エラーが示すように、フィールド初期化子(あなたの場合columns)は他の非静的フィールド(あなたの場合column0column1...)を参照できません。

次の 2 つの方法があります。

中間フィールドを宣言せず、すべてを 1 つにまとめます (実際に への直接参照が必要な場合を除きますcolumnX)。

PictureBox[][] columns =
        new PictureBox[][] 
        { 
            new PictureBox[6], 
            new PictureBox[6], 
            new PictureBox[6], 
            new PictureBox[6], 
            new PictureBox[6], 
            new PictureBox[6], 
            new PictureBox[6] 
        };

または、の初期化をcolumnsコンストラクターに入れます。

PictureBox[] column0 = new PictureBox[6];
PictureBox[] column1 = new PictureBox[6];
PictureBox[] column2 = new PictureBox[6];
PictureBox[] column3 = new PictureBox[6];
PictureBox[] column4 = new PictureBox[6];
PictureBox[] column5 = new PictureBox[6];
PictureBox[] column6 = new PictureBox[6];

PictureBox[][] columns;

public Server()
{
    columns = new PictureBox[][] { column0, column1, column2, column3, column4, column5, column6 };
}
于 2012-12-08T05:33:19.113 に答える