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# 可空值类型
最新推荐文章于 2026-06-25 15:55:19 发布
本文介绍了C#中可空值类型的使用方法,包括Nullable<T>类型的声明、判断值是否为空及如何进行逻辑运算。同时,还讲解了装箱与拆箱的过程。

278

被折叠的 条评论
为什么被折叠?



