第
C#中可空类型的使用
目录一、什么是可空类型二、为可空类型赋值三、使用空接合运算符四、使用可空用户自定义类型
一、什么是可空类型
可空类型允许我们创建一个值类型变量并且可以标记为有效或无效,这样我们就可以有效地将值类型设置为null。可空类型总是基于另外一个叫做基础类型的已经被声明的类型。
可以从任何值类型创建可空类型。不能从引用类型或其他可空类型创建可空类型。不能在代码中显示声明可空类型,只能声明可空类型的变量。编译器会使用泛型隐式地创建可空类型。
举例:声明一个可空int类型的变量
产生的可空类型如下:
必须确保使用可空类型时,该可空变量不是null
可空类型和相应的非可空类型可以轻松转换:
二、为可空类型赋值
可以将以下三种类型的值赋给可空变量:
基础类型的值同一可空类型的值null
三、使用空接合运算符
空接合运算符允许我们在可空类型变量为null时返回一个值给表达式。(可空类型也可以使用标准运算符和比较运算符)空接合运算符由两个连续的问号组成。第一个操作数是可空类型的变量。第二个操作数是基础类型的不可空值。在运行时,如果第一个操作数运算后为null,将返回第二个操作数作为结果。
staticvoidMain(string[]args)
intmyInt=null;
Console.WriteLine(myInt:{0},myInt-1);
myInt=6;
Console.WriteLine(myInt:{0},myInt-1);
}
四、使用可空用户自定义类型
1.创建用户自定义值类型
structMyStruct//声明结构
publicintX;
publicintY;
publicMyStruct(intx,inty)
X=x;
Y=y;
}
2.将值类型转换为可空类型
staticvoidMain(string[]args)
MyStructms=newMyStruct(6,7);//方式1,使用?
MyStructmyStruct=newMyStruct(6,7);
NullableMyStructms3=newNullableMyStruct(myStruct);//使用Nullable创建的可空类型
}
3.使用自定义值类型转换后的可空类型,可空类型其数据只能通过Value来访问。
structMyStruct//声明结构
publicintX;
publicintY;
publicMyStruct(intx,inty)
X=x;
Y=y;
internalclassProgram
staticvoidMain(string[]args)
MyStructms1=newMyStruct(6,7);//值类型
MyStructms2=newMyStruct(6,7);//使用?创建的可空类型
MyStructmyStruct=newMyStruct(6,7);
NullableMyStructms3=newNullableMyStruct(myStruct);//使用Nullable创建的可空类型