如何创建支持null值的结构

本文关键字:null 结构 支持 何创建 创建 | 更新日期: 2023-09-27 18:01:05

我是C#的新手。在c#中,我不能将结构的值设置为null。如何创建支持null值的结构?

如何创建支持null值的结构

可以使用Generic nullable<>使结构和值类型可以为null类来包装它。例如:

Nullable<int> num1 = null;

C#为此提供了一个语言功能,在类型后面添加了一个问号:

int? num1 = null;

这同样适用于包括structs在内的任何值类型。

MSDN解释:Nullable Types(c#(

您可以使用Nullable<T>,它在C#中有一个别名。请记住,结构本身并不是真正的null(编译器在后台对null的处理方式不同(。它更像是一种Option类型。

Struct? value = null;

正如@CodeInChaos所提到的,Nullable<T>只有在非空状态下才会被装箱。

可为空类型

装箱空类型

您可以对结构使用Nullable<T>,也可以使用其简写形式(?(:

表示其基础type是一种值类型,也可以像引用类型一样被赋值为null。

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

由于"Struct"不是引用类型,因此不能像往常一样分配"null"。所以您需要使用以下表单使其成为"可为null"的

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

例如。

Color? color = null;

然后可以为对象指定null,也可以使用条件语句检查null的可为性。