重庆网站建站建设免费,网络管理系统中故障管理的目标是,建设一个网站的费用,南雄做网站分析 C# 2.0 新特性 -- 空类型#xff08;Nullable Types) 在讨论C# 2.0 空类型前#xff0c;先回顾一下.NET 1.0和.NET 1.1对于类型有下面这样的定义#xff1a; .NET 中类型分为值类型和引用类型#xff0c;值类型不能为空#xff0c;引用类型可为空; 在这…分析 C# 2.0 新特性 -- 空类型Nullable Types) 在讨论C# 2.0 空类型前先回顾一下.NET 1.0和.NET 1.1对于类型有下面这样的定义 .NET 中类型分为值类型和引用类型值类型不能为空引用类型可为空; 在这样的前提下所有值类型都赋予了一个初始值例如int i;(初始为0); 由于数据库中出现的对应的值类型可为空这样就出现了两者不能对应的问题。 所有在C# 2.0中引入了可为空的值类型强调一点空类型对于是值类型。 实现方法如下 int i 3;//一个值类型 int? k 3;//一个可为空的值类型简称空类型 int m null;//错误 int? j null;//成功 从上面的例子我们可以看到在值类型后可以定义一个可为空的值类型。 这里我们再深入考虑下面两个问题 1空类型是否是一种新的.NET数据类型呢 2空类型和一般值类型有哪些区别呢 回答如下 1空类型是否是一种新的.NET数据类型呢 空类型不是一种新的.NET数据类型。 实际上空类型是定义在.NET库中的一种范型类System.NullableT,其中T就是可替换的值类型。 int? k 3;同样可以写作System.Nullableint k 3; 其中的操作是通过该类的运算符重载实现的。 2空类型和一般值类型有哪些区别呢 主要区别是空类型并不是一种真正的类型而是一个对象。 例如; int? j 3; int k 3; 在反编译器(ildasm.exe)下面的状态是 [mscorlib]System.Nullable1int32 i [1] int32 k 并且同时对于执行了Nullable默认构造函数 instance void valuetype [mscorlib]System.Nullable1int32::.ctor(!0) .NET 2.0在设计上面十分精巧兼顾了向下兼容性同时也很好的运用抽象的特点处理好了可为空的值类型的实现。 转载于:https://www.cnblogs.com/dragonlhf/archive/2007/11/13/958128.html