web-dev-qa-db-ja.com

C#の構造体、null値を割り当てる方法は?

リストがあります:

List<int, SomeStruct>

何らかの理由で、null値を割り当てることができません。構造体を関連付けたくない場合はどうすればよいですか?

26
Andy Hin

null許容型 を使用:

List<int, SomeStruct?>

構造体は値型なので、nullをリストの要素に割り当てることはできませんが、nullは空のポインターを意味するため、参照型の変数にのみ割り当てることができます。

また、Listを使用しているため、.NETには存在しません。たぶん Dictionary

44
Will Vousden

C#では、構造体は「値の型」であり、nullにすることはできません。

これを本当にnullにする必要がある場合は、末尾に疑問符を追加して、null許容型にしてください。

ただし、おそらく最初にこれの詳細を検討する必要があります。「構造体」をまったく必要としない可能性が非常に高いですが、「クラス」の方が適しています。

12
Will Dean

カスタムのジェネリックコレクションを定義していない限り、_List<T, U>_は _System.Collections.Generic_ 名前空間に存在しません。むしろ_Dictionary<TKey, TValue>_ですか?

Nullableタイプを使用できます: Using Nullable Types (C# Programming Guide)

ValueTypeについては、タイプにnull値を許可することを明示的に指定する必要があります。これを行うには、 '_?_'文字をタイプ名と連結するか、Nullableとしてマークします(Tは構造体の名前です)。

4