web-dev-qa-db-ja.com

配列内のコンストラクターパラメーターを介してカスタムクラス/オブジェクトを初期化するC#構文?

最低4つの変数を持つクラスがあり、そのクラスのコンストラクターを作成して、初期化できるようにしました

MyClass testobj = new MyClass(1234,56789,"test text", "something else", "foo");

正常に動作します。

次に、これらの配列があり、ループで解析する必要があるため、この配列にいくつかの静的データを取得したいと思います。

私のアプローチは:

MyClass[] testobjlist = new MyClass 
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
}

しかし、どういうわけかこれは私に余分なを必要とするという奇妙なエラーを与えます} ???

これに言及すべきかどうかはわかりませんが、Razor-engine 2を使用するWebページに使用します。しかし、これは普通のC#の質問だと思いますか?

私の回避策は現在、サイズで配列を初期化し、インデックスを介して要素を1つずつ追加することですが、テスト時にアイテムを上下に移動しなければならない可能性があるため、上記のソリューションを好む実際のデータで3つ以上。

上記のコードに欠けているものを疑問に思う...?

17
BerggreenDK

新しいMyClassの後に角括弧を追加し、最後にセミコロンを追加してみてください

    MyClass[] testobjlist = new MyClass[] 
        {
         new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
         new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
         new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
        };
24
Eric Beaulieu

これは、構造を作成する必要なく動作します

new MyClass [] { new MyClass { Field1 = "aa", Field2 = 1 } } 
4
ahaliav fox

勝利の速記:

var myClassList = new[]
{
    new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
    new MyClass(1002,2345,"Text xx", "bla bla", "dong")
};
3
Ben Sewards

あなたが欲しい:

MyClass[] testobjlist = new MyClass[] { ... }

あなたは最後の方に括弧がありませんでした。

2
Kirk Woll
MyClass[] testobjlist = 
    {
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
    };
1
Nitin Rajurkar
MyClass[] testobjlist = new MyClass[noOfObjects];
for(int i = 0; i < testobjlist.Length; i++) { testobjlist[i] = new MyClass(); }
0

配列には以下のコードを使用できます。

additionalusers[] __adiitonaluser =
{
    new additionalusers()
};
__adiitonaluser[0].Email = Userpersonal.Email;
0
Hari Lakkakula