C#struct,如何分配空值?

And*_*Hin 26 c# struct nullable

我有一个清单:

List<int, SomeStruct>
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*den 45

使用可空类型:

List<int, SomeStruct?>
Run Code Online (Sandbox Code Playgroud)

您不能分配null给列表的元素,因为结构是值类型,而null意味着空指针,因此只能分配给引用类型变量.

另请注意,List在.NET中不存在使用它!也许你想要Dictionary

  • @whydna:阅读可空类型。本质上,`SomeStruct?` 是`Nullable&lt;SomeStruct&gt;` 的语法糖。你不能直接访问成员,但这是你为使用带有值类型的 `null` 语义而付出的代价。 (2认同)

Wil*_*ean 12

在C#中,struct是一个'值类型',它不能为null.

如果你真的真的需要能够将其置零,那么通过添加一个尾随问号将其变为'可空'类型.

你应该首先考虑一下这个问题的细节 - 你很可能根本不想要一个'结构',但是对于'类'来说会更好.

  • 同意.问题是我不拥有Struct,我只是使用它:( (3认同)

Wil*_*ler 5

除非您定义了自定义泛型集合,List<T, U>否则System.Collections.Generic命名空间中不存在。你的意思是Dictionary<TKey, TValue>

您可以使用 Nullable 类型:Using Nullable Types (C# Programming Guide).

对于任何 ValueType,您需要明确指定您的类型将允许空值。您可以通过将 ' ?' 字符与您的类型名称连接起来,或将其标记为 Nullable,其中 T 是您的结构名称来实现。

  • 哪里有三遗嘱,哪里就有三道? (12认同)
  • 当我看到将有三个'Will'回答一个问题时,我忍不住回答了!=P (6认同)