C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.48048 の関連記事表示

<< 0 >>
■48048  クラスの配列の値をまとめて初期化したい
□投稿者/ OROCHI -(2010/03/23(Tue) 00:22:48)

    分類:[C#] 

    OS XP SP3
    Visual studio 2005

    こんにちは、以下のようなクラスの配列を作ろうとしています

    public class Specfication_MAP
    {
    public string ground;
    public string wall;
    public string hitwall;
    public string stagename;
    public string stagename_E;
    public int npc_num;
    };

    このクラスには上にあるように6つの要素を持つのですが、このクラスを配列にして使おうと考えています
    ということで、以下のように配列を作りました

    private Specfication_MAP[] sm = new Specfication_MAP[999];
    for (int a = 0; a < 999; a++)
    {
    sm[a] = new Specfication_MAP();
    }

    これで配列形成はできたのですが、この配列に値を代入するときに、CやC++の構造体のように「まとめて」代入する方法というものはあるのでしょうか?
    (例)
    sm[0] = {"a","b","c","d","e",0}

    この配列の値を使うときは、要素6つが全部そろっている必要があります。
    ということで、書き漏らし防止や見やすさを考えて上の例のようにまとめて書きたいのですが、いかがでしょうか?
親記事 /過去ログ81より / 関連記事表示
削除チェック/

■48050  Re[1]: クラスの配列の値をまとめて初期化したい
□投稿者/ 魔界の仮面弁士 -(2010/03/23(Tue) 08:11:12)
    No48048 (OROCHI さん) に返信
    >「まとめて」代入する方法というものはあるのでしょうか?
    メンバがすべて揃っている必要がある場合には、
    クラスに『コンストラクタ』を用意するようにします。

    そうすれば、
    > sm[a] = new Specfication_MAP();
     sm[a] = new Specfication_MAP("a","b","c","d","e",0);
    のように指定することができます。

    あるいは、オブジェクト初期化子という物もありますが、
    今回の場合には、コンストラクタを用意したほうが良いかと思います。
    http://msdn.microsoft.com/ja-jp/library/bb384062.aspx
記事No.48048 のレス /過去ログ81より / 関連記事表示
削除チェック/

■48053  Re[2]: クラスの配列の値をまとめて初期化したい
□投稿者/ あぴす -(2010/03/23(Tue) 09:29:57)
    初期化ならコンストラクタを設定してやればよいと思います。

    また、代入であればコピーコンストラクタを定義してやればよいのではないでしょうか。
    http://msdn.microsoft.com/ja-jp/library/ms173116(VS.80).aspx
記事No.48048 のレス /過去ログ81より / 関連記事表示
削除チェック/

■48067  Re[3]: クラスの配列の値をまとめて初期化したい
□投稿者/ OROCHI -(2010/03/23(Tue) 14:19:42)
    ありがとうございました
    
    目的が初期化だったので、以下のようにクラスにコンストラクタを作ることで解決できました
    ありがとうございます
    
    // クラス
    
     public class Specfication_MAP
        {
            public string ground;      // 地面
            public string wall;        // 壁やオブジェクト
            public string hitwall;     // 当たり判定用オブジェクト
            public string stagename;   // ステージ名表示
            public string stagename_E; // ステージ名英語
            public int npc_num;        // npcの配置数
    
            // コンストラクタ
            public Specfication_MAP(string ground, string wall, string hitwall, string stagename, string stagename_E, int npc_num)
            {
                this.ground = ground;
                this.wall = wall;
                this.hitwall = hitwall;
                this.stagename = stagename;
                this.stagename_E = stagename_E;
                this.npc_num = npc_num;
            }
        };
    
    // インスタンス生成など
    public Specfication_MAP[] sm = new Specfication_MAP[999];  
    
    sm[0] = new Specfication_MAP("a","b","c","d","e",0);
    
記事No.48048 のレス / END /過去ログ81より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -