C# nullable:可空类型
在 C# 1.x 的版本中,一个值类型的变量是不可以被赋值为 null(空值)的,否则会产生异常。而在 C# 2.0 中,新增了一个 nullable 类型,可以使用 nullable 类型定义包含 null 值的数据,例如,您可以在 nullable <Int32>(可为空的 int32 类型)类型的变量中存储 -2147483648 到 2147483647 之间的任何值或者 null。同样,您可以在 nullable <bool>(可为空的 bool 类型)类型的变量中存储 true、false 或 null。声明可空类型的语法如下:
【示例】下面通过示例来演示可空类型的用法:
需要注意的是,Null 合并运算符左右两边操作数的类型必须相同,或者右操作数的类型可以隐式的转换为左操作数的类型,否则将编译错误。
【示例】下面通过示例来演示 Null 合并运算符的使用:
data_type? variable_name = null;
其中,data_type 为要声明的数据类型,后面紧跟一个问号;variable_name 则为变量的名称。【示例】下面通过示例来演示可空类型的用法:
using System; namespace c.biancheng.net { class Demo { static void Main(string[] args){ int? num1; int? num2 = 123; num1 = null; double? num3 = new double?(); double? num4 = 3.1415926; bool? boolval = null; // 输出这些值 Console.WriteLine("num1 = {0} \r\n num2 = {1} \r\n num3 = {2} \r\n num4 = {3} \r\n boolval = {4}", num1, num2, num3, num4, boolval); Console.ReadLine(); } } }运行结果如下:
num1 =
num2 = 123
num3 =
num4 = 3.1415926
boolval =
Null 合并运算符(??)
在 C# 中 Null 合并运算符用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为 null,那么运算符将返回左操作数,否则返回右操作数。例如表达式 a??b
中,如果 a 不为空,那么表达式的值则为 a,反之则为 b。需要注意的是,Null 合并运算符左右两边操作数的类型必须相同,或者右操作数的类型可以隐式的转换为左操作数的类型,否则将编译错误。
【示例】下面通过示例来演示 Null 合并运算符的使用:
using System; namespace c.biancheng.net { class Demo { static void Main(string[] args){ int? num1 = null; int? num2 = 123; int num3; num3 = num1 ?? 321; Console.WriteLine("num3 = {0}", num3); num3 = num2 ?? 321; Console.WriteLine("num3 = {0}", num3); Console.ReadLine(); } } }运行结果如下:
num3 = 321
num3 = 123