如何创建支持null值的结构
本文关键字:null 结构 支持 何创建 创建 | 更新日期: 2023-09-27 18:01:05
我是C#的新手。在c#中,我不能将结构的值设置为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的可为性。