C#提供了一个特殊的数据类型,nullable(可空)类型。可空类型可以表示其基础值类型正常范围内的值,外带一个null值。
相关的字符有?和??两种。
【1】?字符
单问号用于对无法直接赋值为null的数据类型进行null的赋值,意思是这个数据类型是Nullable类型的。例如Nullable<Int32>(读作“可空的Int32”),可以被赋值为-2147483648到2147483647之间的任意值,也可以被赋值为null值。在处理数据库和其他可能包含未赋值的元素的数据类型时,将null赋值给数值型或布尔型的功能特别有用。声明一个nullable类型的语法如下:
1 int ? num1 = null; 2 int ? num2 = 56; 3 double ? num3 = new double?(); 4 //int ? i = 3等价于Nullable<int> i = new Nullable<int>(3);
【2】??字符
??是合并运算符,用于定义可空类型和引用类型的默认值。Null合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。Null合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。若第一个操作数的值为null,则运算符返回第二个操作数的值,否则返回第一个操作数的值。示例:
1 int ? num1 = null; 2 int ? num2 = 10; 3 int num3; 4 num3 = num1 ?? 5; //num3值为5 5 num3 = num2 ?? 5; //num3值为10