2009-05-13 6 views

答えて

6

はい、構造体にリストを含めることはできますが、フィールド初期化子でリストを初期化することはできません。代わりにコンストラクタを使用する必要があります。

struct MyStruct 
{ 
    public List<string> MyList; 
    public int MyInt; 

    public MyStruct(int myInt) 
    { 
     MyInt = myInt; 
     MyList = new List<string>(); 
    } 
} 
+1

また、パラメータのないコンストラクタを使用することはできません。 –

+0

私はそれが何を意味するのかよくわかりません – Crash893

+0

ポイントは...構造体は可変型(または可変エンティティの集合)を参照すべきではありません。 – boctulus

1

構造体は、コンストラクタを持つことができますし、コンストラクタでリストをインスタンス化することができ、それを得ていません。

1

私はC#の専門家ではありませんが、構造はメモリの外観の単なるプロトタイプです。 "new list()"を実行してリスト変数に代入できるようにするには、構造変数を宣言する必要があります。

struct testのようなもの; a.y =新しいリスト();

私はC#でプログラミングしたことがないので、Cの構文をC#に変換してください。

0

これは可能です - 構造体のコンストラクタを宣言し、構造体コンストラクタでリストインスタンスを作成します。コードスニペットで提案したようにイニシャライザを使用することはできません。

+0

"private list y = new List ();"私に "エラーCS0573:' test.y ':Structsはインスタンスフィールドイニシャライザを持つことはできません "もちろんクラスで行うことができます... –

+0

イェップ、私は同時にそれをテストし、答えを更新しました。 – sharptooth