using System;
namespace 可空值类型
{
class Program
{
static void Main(string[] args)
{
//Int32 a = null; //错误,值类型不能为空
Int32? a = null;//Int32? 和System.Nullable<Int32>等价
Int32? b = 5;//将int32类型实例隐式转换成Nullable<Int32>类型;
if (a.HasValue) Console.WriteLine(a.ToString());
else Console.WriteLine("a=null");
if (b.HasValue) Console.WriteLine("b="+b.ToString());
else Console.WriteLine("b=null");
Console.WriteLine("b的类型:" + b.GetType());//其实应该为System.Nullable<Int32>
/*******************************************************************************
* 逻辑测试
* ****************************************************************************/
Boolean? c1 = null;
Boolean? c2 = true;
Boolean? c3 = false;
string t=null;
Console.WriteLine("c1&c2:{0}", c1 & c2);
Console.WriteLine("c1&c3:{0}", c1 & c3);
Console.WriteLine("c1|c2:{0}", c1 | c2);
Console.WriteLine("c1|c3:{0}", c1 | c3);
Console.WriteLine(t??"空值");
t = "Hello,fxqcn!";
Console.WriteLine(t ?? "空值");//??和?:大致意思一样,但更简单
//如果前一个表达式为null,则表达式取后面的值,??:“空接合操作符”
/*******************************************************************************
* 装箱与拆箱
* ****************************************************************************/
object o = 5;//已装箱的Int32
//把它拆箱为一个Nullable<Int32>和一个Int32
Int32? d1 = (Int32?)o;
Int32 d2 = (Int32)o;//如果引用类型不为NULL,可以将它转换为System.Nullable<Int32>类型和int32类型
o = null;
d1 = (Int32?)o;
//d2 = (Int32)o; 错误,如果引用类型为空,只能将它转换为System.Nullable<Int32>类型
Console.ReadLine();
}
}
}
CLR VIA C# 可空值类型
最新推荐文章于 2020-05-28 14:55:21 发布