我有一个清单:
List<int, SomeStruct>
由于某种原因,它不允许我为其分配空值。如果我想没有关联的结构,我该怎么办?
答案 0 :(得分:41)
List<int, SomeStruct?>
您不能将null
分配给列表的元素,因为结构是值类型,而null
表示空指针,因此只能分配给引用类型变量。
另请注意,在您使用它时List
在.NET中不存在!也许你想要Dictionary
?
答案 1 :(得分:11)
在C#中,struct是'value type',不能为null。
如果你真的,真的需要能够将其置零,那么通过添加一个尾随问号将其变为'可空'类型。
你应该首先考虑一下这个问题的细节 - 你很可能根本不想要'结构',但是对于'类'来说会更好。
答案 2 :(得分:4)
除非您定义了自定义通用集合,否则System.Collections.Generic
命名空间中不存在List<T, U>
。你的意思是Dictionary<TKey, TValue>
吗?
您可以使用Nullable类型:Using Nullable Types (C# Programming Guide)
。
对于任何ValueType,您需要明确指定您将为您的类型允许空值。您可以通过将“?
”字符与类型名称连接,或将其标记为Nullable来实现,其中T是结构的名称。