我是C#的新手。在c#中,我无法将结构的值设置为null,如何创建具有空值支持的结构?
答案 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>
仅在其处于非空状态时被装箱。
答案 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,并使用条件语句检查可空性。