你必須知道的.net

你必須知道的.net

ID:26068928

大?。?.42 MB

頁數(shù):205頁

時間:2018-11-24

你必須知道的.net_第1頁
你必須知道的.net_第2頁
你必須知道的.net_第3頁
你必須知道的.net_第4頁
你必須知道的.net_第5頁
資源描述:

《你必須知道的.net》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、1第一回:恩怨情仇:is和as本文將介紹以下內(nèi)容:?類型轉(zhuǎn)換?is/as操作符小議?1.?引言?類型安全是.NET設(shè)計之初重點考慮的內(nèi)容之一,對于程序設(shè)計者來說,完全把握系統(tǒng)數(shù)據(jù)的類型安全,經(jīng)常是力不從心的問題?,F(xiàn)在,這一切已經(jīng)在微軟大牛們的設(shè)計框架中為你解決了。在.NET中,一切類型都必須集成自System.Object類型,因此我們可以很容易的獲得對象的準(zhǔn)確類型,方法是:GetType()方法。那么.NET中的類型轉(zhuǎn)換,應(yīng)該考慮的地方有那些呢?2.概念引入類型轉(zhuǎn)換包括顯示轉(zhuǎn)換和隱式轉(zhuǎn)換,在.NET中類型轉(zhuǎn)換的基本規(guī)則如下:·任何類型都可以安全的轉(zhuǎn)換為其基類類型,可以由隱式轉(zhuǎn)換來完成;·

2、任何類型轉(zhuǎn)換為其派生類型時,必須進行顯示轉(zhuǎn)換,轉(zhuǎn)換的規(guī)則是:(類型名)對象名;·使用GetType可以取得任何對象的精確類型;·基本類型可以使用Covert類實現(xiàn)類型轉(zhuǎn)換;·除了string以外的其他類型都有Parse方法,用于將字符串類型轉(zhuǎn)換為對應(yīng)的基本類型;·值類型和引用類型的轉(zhuǎn)換機制稱為裝箱(boxing)和拆箱(unboxing)。3.原理與示例說明淺談了類型轉(zhuǎn)換的幾個普遍關(guān)注的方面,該將主要精力放在is、as操作符的恩怨情仇上了。類型轉(zhuǎn)換將是個較大的話題,留于適當(dāng)?shù)臅r機討論。is/as操作符,是C#中用于類型轉(zhuǎn)換的,提供了對類型兼容性的判斷,從而使得類型轉(zhuǎn)換控制在安全的范疇,提供

3、了靈活的類型轉(zhuǎn)換控制。is的規(guī)則如下:·檢查對象類型的兼容性,并返回結(jié)果,true或者false;·不會拋出異常;·如果對象為null,則返回值永遠為false。其典型用法為:?1object?o?=?new?object();?2?3class?A?4?5{?6?7}?8?9if?(o?is?A)??//執(zhí)行第一次類型兼容檢查1011{1213??A?a?=?(A)?o;??//執(zhí)行第二次類型兼容檢查1415}1617?as的規(guī)則如下:·檢查對象類型的兼容性,并返回結(jié)果,如果不兼容就返回null;·不會拋出異常;·如果結(jié)果判斷為空,則強制執(zhí)行類型轉(zhuǎn)換將拋出NullReferenceExc

4、eption異常。其典型用法為:??1object?o?=?new?object();?2?3class?B?4?5{?6?7}?8?9B?b?=?o?as?B;??//執(zhí)行一次類型兼容檢查1011if?(b?!=?null)1213{??1415??MessageBox.Show("b?is?B's?instance.");1617}18194.結(jié)論縱上比較,is/as操作符,提供了更加靈活的類型轉(zhuǎn)型方式,但是as操作符在執(zhí)行效率上更勝一籌,我們在實際的編程中應(yīng)該體會其異同,酌情量才。?第二回:對抽象編程:接口和抽象類本文將介紹以下內(nèi)容:?面向?qū)ο笏枷耄憾鄳B(tài)?接口?抽象類?1.?引言在我

5、之前的一篇post《抽象類和接口的誰是誰非》中,和同事管偉的討論,得到很多朋友的關(guān)注,因為是不成體系的論道,所以給大家了解造成不便,同時關(guān)于這個主題的系統(tǒng)性理論,我認為也有必要做以總結(jié),因此才有了本篇的新鮮出爐。同時,我將把上貼中的問題順便也在此做以交代。2.概念引入·什么是接口?接口是包含一組虛方法的抽象類型,其中每一種方法都有其名稱、參數(shù)和返回值。接口方法不能包含任何實現(xiàn),CLR允許接口可以包含事件、屬性、索引器、靜態(tài)方法、靜態(tài)字段、靜態(tài)構(gòu)造函數(shù)以及常數(shù)。但是注意:C#中不能包含任何靜態(tài)成員。一個類可以實現(xiàn)多個接口,當(dāng)一個類繼承某個接口時,它不僅要實現(xiàn)該接口定義的所有方法,還要實現(xiàn)該接

6、口從其他接口中繼承的所有方法。定義方法為:?public?interface?System.IComparable?{??int?CompareTo(object?o);?}?public?class?TestCls:?IComparable?{??public?TestCls()??{??}???private?int?_value;??public?int?Value??{get?{?return?_value;?}set?{?_value?=?value;?}??}???public?int?CompareTo(object?o)??{//使用as模式進行轉(zhuǎn)型判斷TestCls?aC

7、ls?=?o?as?TestCls;if?(aCls?!=?null){//實現(xiàn)抽象方法return?_value.CompareTo(aCls._value);}??}?}·什么是抽象類?抽象類提供多個派生類共享基類的公共定義,它既可以提供抽象方法,也可以提供非抽象方法。抽象類不能實例化,必須通過繼承由派生類實現(xiàn)其抽象方法,因此對抽象類不能使用new關(guān)鍵字,也不能被密封。如果派生類沒有實現(xiàn)所有的抽象方法,則該派生類也必

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。