C#:基础编程篇
本节知识
一:Nullable类
①:支持可分配有 null 的值类型。 无法继承此类。
②:命名空间:System
程序集:System.Runtime.dll, mscorlib.dll, netstandard.dll
③:方法
例如:
int ?num1 = null;
double? num2 = new double?();
if(num1==null)
{
Console.WriteLine("num1为null");
}
if(num2==null)
{
Console.WriteLine("num2为null");
}
运行结果:
备注:默认情况下,所有引用类型(如 String)都可以为 null,但所有值类型(如 Int32)都不是,在C#和 Visual Basic 中,通过在值类型后使用 ? 表示法,将值类型标记为可以为 null。
二:Nullable < T >结构体
Nullable 类提供 Nullable 结构互补支持。
①:表示可分配有 null 的值类型。
②:命名空间:System
程序集:System.Runtime.dll, mscorlib.dll, netstandard.dll
③:构造函数,属性,方法,运算符
④:练习
Nullable<int> num3 = new Nullable<int>(3);
if (num3.HasValue)
{
Console.WriteLine(num2.Value);
}
else
{
Console.WriteLine("该值不是一个有效值");
}
运行结果:
注意:Nullable.HasValue为false时,尝试访问 Value 属性将引发 InvalidOperationException异常。
Nullable<int> num2 = new Nullable<int>();
Console.WriteLine(num2.Value);
⑤:装箱和取消装箱
⑥:int?和Nullable< int >是等价的
Nullable<int> num2 = new Nullable<int>(3);
int? num3=3;
Console.WriteLine(num2.Value+";"+num3.Value);
Console.ReadLine();
运行结果:
源代码
三:Nullable适用版本
四:??是什么意思
int? num1 = null;
int? num2 = 6;
int num3;
num3 = num1 ?? 3;//这里3就是预设值
Console.WriteLine("num3={0}",num3);
num3 = num2 ?? 3;
Console.WriteLine("num3={0}", num3);
Console.ReadLine();
运行结果:
备注:??的作用,就是防止出现null的情况,引用了一个预设值,如果我给的值是null就引用预设值,如果我给的值不是null,就用我给的值。
相关链接:
菜鸟教程
Nullable< T > ApI