如何创建具有空值支持的结构?

时间:2011-07-03 18:18:03

标签: c# structure nullable

我是C#的新手。在c#中,我无法将结构的值设置为null,如何创建具有空值支持的结构?

4 个答案:

答案 0 :(得分:17)

通过使用Generic Nullable<>可以使结构和值类型可为空。包装它的类。例如:

Nullable<int> num1 = null;

C#通过在类型后添加问号来为此提供语言功能:

int? num1 = null;

同样适用于任何值类型,包括结构。

MSDN说明:Nullable Types (c#)

答案 1 :(得分:6)

您可以使用在C#中具有别名的Nullable<T>。请记住,struct本身并不是null(编译器在幕后不同地处理null)。它更像是Option type

Struct? value = null;

由于@CodeInChaos提及Nullable<T>仅在其处于非空状态时被装箱。

Nullable Types

Boxing Nullable Types

答案 2 :(得分:4)

你可以使用Nullable<T>作为结构,或者使用相同的简写形式(?):

  

表示其底层的对象   type是一个值类型,也可以是   像参考类型一样指定null。

struct Foo
{
}

Nullable<Foo> foo2 = null; 
Foo? foo = null; //equivalent shorthand form

答案 3 :(得分:3)

自&#34; Struct&#34;不是引用类型,你不能分配&#34; null&#34;像往常一样。所以你需要使用下面的表格来使它成为可空的&#34;

[结构名称]? [变量名] = null

例如

Color? color = null;

然后你可以为对象分配null,并使用条件语句检查可空性。