C#struct,如何分配空值?

时间:2010-11-10 20:36:19

标签: c# struct nullable

我有一个清单:

List<int, SomeStruct>

由于某种原因,它不允许我为其分配空值。如果我想没有关联的结构,我该怎么办?

3 个答案:

答案 0 :(得分:41)

使用nullable types

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是结构的名称。