分析 C# 2.0 新特性 -- 空类型(Nullable Types)
生活随笔
收集整理的這篇文章主要介紹了
分析 C# 2.0 新特性 -- 空类型(Nullable Types)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
分析?C#?2.0?新特性??--?空類型(Nullable?Types)
在討論C#?2.0?空類型前,先回顧一下.NET?1.0和.NET?1.1對于類型有下面這樣的定義:
".NET?中類型分為值類型和引用類型,值類型不能為空,引用類型可為空";
在這樣的前提下,所有值類型都賦予了一個初始值例如:int?i;(初始為0);
由于數(shù)據(jù)庫中出現(xiàn)的對應(yīng)的值類型可為空,這樣就出現(xiàn)了兩者不能對應(yīng)的問題。
所有在C#?2.0中引入了可為空的值類型,強調(diào)一點空類型對于是值類型。
實現(xiàn)方法如下:
int??i?=?3;//一個值類型
int??k?=?3;//一個可為空的值類型(簡稱空類型)
int??m?=?null;//錯誤
int??j?=?null;//成功
從上面的例子我們可以看到在值類型后可以定義一個可為空的值類型。
這里我們再深入考慮下面兩個問題:
1,空類型是否是一種新的.NET數(shù)據(jù)類型呢?
2,空類型和一般值類型有哪些區(qū)別呢?
回答如下;
1,空類型是否是一種新的.NET數(shù)據(jù)類型呢?
空類型不是一種新的.NET數(shù)據(jù)類型。
實際上空類型是定義在.NET庫中的一種范型類System.Nullable<T>,其中T就是可替換的值類型。
int??k?=?3;同樣可以寫作System.Nullable<int>?k?=?3;
其中的操作是通過該類的運算符重載實現(xiàn)的。
2,空類型和一般值類型有哪些區(qū)別呢?
主要區(qū)別是空類型并不是一種真正的類型,而是一個對象。
例如;
int??j?=?3;
int?k?=?3;
在反編譯器(ildasm.exe)下面的狀態(tài)是
[mscorlib]System.Nullable`1<int32>?i
[1]?int32?k
并且同時對于執(zhí)行了Nullable默認構(gòu)造函數(shù)
instance?void?valuetype?[mscorlib]System.Nullable`1<int32>::.ctor(!0)
.NET?2.0在設(shè)計上面十分精巧,兼顧了向下兼容性同時也很好的運用抽象的特點處理好了可為空的值類型的實現(xiàn)。
在討論C#?2.0?空類型前,先回顧一下.NET?1.0和.NET?1.1對于類型有下面這樣的定義:
".NET?中類型分為值類型和引用類型,值類型不能為空,引用類型可為空";
在這樣的前提下,所有值類型都賦予了一個初始值例如:int?i;(初始為0);
由于數(shù)據(jù)庫中出現(xiàn)的對應(yīng)的值類型可為空,這樣就出現(xiàn)了兩者不能對應(yīng)的問題。
所有在C#?2.0中引入了可為空的值類型,強調(diào)一點空類型對于是值類型。
實現(xiàn)方法如下:
int??i?=?3;//一個值類型
int??k?=?3;//一個可為空的值類型(簡稱空類型)
int??m?=?null;//錯誤
int??j?=?null;//成功
從上面的例子我們可以看到在值類型后可以定義一個可為空的值類型。
這里我們再深入考慮下面兩個問題:
1,空類型是否是一種新的.NET數(shù)據(jù)類型呢?
2,空類型和一般值類型有哪些區(qū)別呢?
回答如下;
1,空類型是否是一種新的.NET數(shù)據(jù)類型呢?
空類型不是一種新的.NET數(shù)據(jù)類型。
實際上空類型是定義在.NET庫中的一種范型類System.Nullable<T>,其中T就是可替換的值類型。
int??k?=?3;同樣可以寫作System.Nullable<int>?k?=?3;
其中的操作是通過該類的運算符重載實現(xiàn)的。
2,空類型和一般值類型有哪些區(qū)別呢?
主要區(qū)別是空類型并不是一種真正的類型,而是一個對象。
例如;
int??j?=?3;
int?k?=?3;
在反編譯器(ildasm.exe)下面的狀態(tài)是
[mscorlib]System.Nullable`1<int32>?i
[1]?int32?k
并且同時對于執(zhí)行了Nullable默認構(gòu)造函數(shù)
instance?void?valuetype?[mscorlib]System.Nullable`1<int32>::.ctor(!0)
.NET?2.0在設(shè)計上面十分精巧,兼顧了向下兼容性同時也很好的運用抽象的特點處理好了可為空的值類型的實現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/dragonlhf/archive/2007/11/13/958128.html
總結(jié)
以上是生活随笔為你收集整理的分析 C# 2.0 新特性 -- 空类型(Nullable Types)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB工程师为你详解FPC排线及其用途
- 下一篇: c# char unsigned_dll