-1
私はIList<int> throws Null Reference Exception when adding valuesと同じ問題を抱えており、解決策はコンストラクタのリストフィールドを "new List();"で初期化しますが、私のプログラムではクラスはありません。 C#の構造体にパラメータがない場合、C#で何ができますか?構造体のリストフィールドを初期化する
public struct ListStruct<T> : IEnumerable<T>, IList<T>
{
private List<T> value;
//public ListStruct()
//{
// this.value = new List<T>();
//}
// ...
public void Add(T item)
{
((IList<T>)value).Add(item); // Execution time: NullReferenceException was unhandled
}
}
'リスト'を 'struct 'の中にラップすることは、私にとっては悪い考えです。なぜあなたはこれをやっている?参考までに、参照はあなたの 'struct'の中の' List 'です。 'プライベートリスト値=新しいリスト();'を初期化する必要があります。 –
juharr
なぜコンストラクタをコメントアウトしますか?あなたはすでに問題を解決するコードを持っています。 (実際には、コンストラクタのパラメータを定義する必要があります。このようなことは、上記のコメントに戻って、この構造体が実際に*なるものであることを理解しようとしています)。 – David
これは医師によってマークされた複製ではありません。デビッド。問題は、構造体にデフォルトのコンストラクタを持てないことです。したがって、コンストラクタにパラメータを指定しないかぎり、参照で格納されているメンバを初期化する方法はありません(https://msdn.microsoft.com/en-us/library/aa288208( v = vs.71).aspx)、またはそれを 'struct'とする考えを放棄してください。 – zmechanic