c#提供了一个特殊的数据类型,nullable类型(可空类型)可空类型可以表示其基础值类型正常范围内的值,再加上一个null值
例如,Nullable<int32>,读作可空的int32,可以被赋值为-2147483648到2147483647之间的任意值,也可以被赋值为null值,类似的,Nullable<bool>变量可以被赋值为ture或false或null
在处理数据库和其他包含可能未赋值的元素的数据类型时,将null赋值给数值类型或布尔型 的功能特别有用,例如,数据库中的布尔型字段可以存储值true或false,或者,该字段也可以未定义
声明一个nullable类型的语法如下
<data_type>?<variable_name>=null;
下面的实例演示了可空数据类型的用法
using System;
namespace CalculatorApplication
{
class NullableAtshow
{
static void Main(string[] args)
{
int? num1=null;
int? num2=45;
double? num3=new double?();
doule? num4=3.14157
bool? boolval=new bool?();
//显示值
Console.WriteLine("显示可空类型值{0},{1},{2},{3}",num1,num2,num3,num4);
Console.WriteLine("一个可空的布尔值{0}",boolval);
Console.ReadLine();
}
}
}
显示结果
显示可空类型的值45,3.14157
一个可空的布尔值
Null合并运算符(??)
Null合并运算符用于定义可空类型和引用类型的默认值
Null合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null,Null合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型
如果第一个操作数的值为null,则运算符返回第二个操作数的值,否则返回第一个操作数的值,下面实例
using System;
namespace CalculatorApplication
{
class NullablesAtshow
{
static void Main(string[] args)
{
double? num1=null;
double? num2=3.14157;
double num3;
num3=num1??5.34;
Console.WriteLine("num3值{0}",num3);
num3=num2??5.34;
Console.WriteLine("num3值{0}",num3);
Console.ReadLine();
}
}
}
显示结果
num3值5.34
num3值3.14157