成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C# CLR的語言特性

開發(fā) 后端
本文從7個(gè)方面講述C# CLR,其中他們有new和override區(qū)別、構(gòu)造函數(shù)、abstract, virtual、as和強(qiáng)制類型轉(zhuǎn)換等等。

本文從7個(gè)方面講述C# CLR,其中他們有new和override區(qū)別、構(gòu)造函數(shù)、abstract, virtual、as和強(qiáng)制類型轉(zhuǎn)換等等。

1. C# CLR之new和override區(qū)別

override在子類中重寫基類的方法;new在子類中為基類同名(virtual)方法添加一個(gè)新的版本,會(huì)保留基類的同名(virtual)方法。

如果基類的同名方法不給出new和override修飾符,.Net默認(rèn)采用new的方式,編譯時(shí)將產(chǎn)生一條警告信息。

關(guān)于重載:一般有按名稱隱藏和按簽名隱藏兩種策略,C#默認(rèn)按簽名隱藏,即默認(rèn)使用hidebysig特性。

2. C# CLR之構(gòu)造函數(shù)

a) static構(gòu)造函數(shù).cctor,對(duì)類型初始化。在類里面聲明的靜態(tài)變量將由C#編譯器自動(dòng)編譯到.cctor中,如果有顯示的聲明靜態(tài)構(gòu)造器,也是編譯到.cctor(在.cctor中局部靜態(tài)變量將位于顯示聲明的靜態(tài)構(gòu)造器前面)。

CLR有兩種策略決定.cctor的執(zhí)行時(shí)間,第一種是首次使用類型時(shí),第二種是首次使用類型的靜態(tài)成員時(shí)通過給類型添加beforefieldinit 元數(shù)據(jù)特性)。C#編譯器對(duì)沒有顯示聲明靜態(tài)構(gòu)造器的類型默認(rèn)設(shè)置beforefieldinit特性,對(duì)存在顯示靜態(tài)構(gòu)造器的類型不會(huì)設(shè)置。

b) 類的構(gòu)造函數(shù).ctor。要注意的一點(diǎn)是CLR分配對(duì)象時(shí)將調(diào)用深度派生(most-derived)類型的構(gòu)造函數(shù)方法,在派生類型構(gòu)造函數(shù)的最開始位置調(diào)用基類構(gòu)造方法,不管在派生類型本身還是基類的構(gòu)造函數(shù)中,對(duì)象的實(shí)際類型都是派生類型。在這樣的機(jī)制下,有些問題需要謹(jǐn)慎處理,例如如果基類在構(gòu)造函數(shù)中調(diào)用被override過的virtual方法,而這時(shí)派生類的構(gòu)造函數(shù)并沒有執(zhí)行。

3. C# CLR之a(chǎn)bstract, virtual

abstract的類不能實(shí)例化,只能用于子類繼承。

abstract的方法隱式的就是一個(gè)virtual方法;abstract的方法子類必須實(shí)現(xiàn);abstract方法只能有聲明,不能包含實(shí)現(xiàn)。

virtual方法提供給子類override;可以包含實(shí)現(xiàn)。

4. C# CLR之a(chǎn)s和強(qiáng)制類型轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換:MyClass myclass=(MyClass)obj; 使用as:MyClass myclass=obj as MyClass;

區(qū)別在于,如果obj不能被轉(zhuǎn)換成MyClass類型,強(qiáng)制類型轉(zhuǎn)換會(huì)拋出異常,而使用as時(shí)不會(huì)有異常,只是轉(zhuǎn)換結(jié)果(myclass變量)的值為null。

強(qiáng)制類型轉(zhuǎn)換使用castclass操作碼(opcode)實(shí)現(xiàn),as轉(zhuǎn)換、is判斷使用isinst操作碼實(shí)現(xiàn)。這兩個(gè)操作碼都使用類型的元數(shù)據(jù)信息,將對(duì)象轉(zhuǎn)換成給定類型放在當(dāng)前計(jì)算堆棧上,只不過無法轉(zhuǎn)換時(shí)一個(gè)拋異常,另一個(gè)將null放在堆棧中。

關(guān)于類型轉(zhuǎn)換:每個(gè)對(duì)象通過header中的類型句柄引用類型元數(shù)據(jù),在類型元數(shù)據(jù)中有一個(gè)interface table,指示類型實(shí)現(xiàn)了哪些接口(每個(gè)項(xiàng)都包含指向接口元數(shù)據(jù)的類型指針),一個(gè)基類類型元數(shù)據(jù)指針,在接口、繼承體系之間的類型兼容性測試主要基于這些信息進(jìn)行。類型轉(zhuǎn)換另外需要考慮的,是類型是否有重載隱式、顯示類型轉(zhuǎn)換操作等。 [Page]

5. C# CLR之修飾符

private,只能在同一個(gè)類中調(diào)用。

protected,可在派生類中調(diào)用,無論派生類型是否在同一個(gè)assembly中。

internal,只能在同一個(gè)assembly中調(diào)用。

protected internal,可以在任何assembly的派生類型中調(diào)用,也可由同一個(gè)assembly中的任何類型調(diào)用。

6. C# CLR之readonly / const區(qū)別

const在編譯之后將常量編譯到指令流中,只在元數(shù)據(jù)保留有常量名和值的信息。readonly的變量只能在聲明時(shí)提供初始化值,或者在構(gòu)造函數(shù)中初始化,之后變量的值不再允許修改。

7.C# CLR之 ref和out區(qū)別

都是表示引用方式傳遞參數(shù),out明確要求調(diào)用者進(jìn)行初始化,ref對(duì)調(diào)用方和被調(diào)用方都沒有明確的職責(zé)要求。因此對(duì)于out型的參數(shù),如果在調(diào)用之前沒有初始化賦值,會(huì)產(chǎn)生一個(gè)編譯器錯(cuò)誤。

以上就是對(duì)C# CLR的簡單介紹。

【編輯推薦】

  1. 淺析基于SQL2005的CLR存儲(chǔ)過程
  2. 分析與對(duì)比CLR Via C#靜態(tài)構(gòu)造函數(shù)的性能
  3. 為你解疑:CLR是什么?
  4. linq to sql多表查詢淺析
  5. linq to sql多表基礎(chǔ)描述
責(zé)任編輯:阡陌 來源: VB.NET專題網(wǎng)
相關(guān)推薦

2009-09-18 15:53:37

C# 3.0新語言特性

2009-09-18 09:02:45

CLR Via C#

2009-08-03 16:28:53

Java語言與C#語言

2009-07-31 17:28:35

C#語言調(diào)用DLL

2009-08-19 16:50:32

Visual C#C#語言特性

2009-05-26 09:28:22

C# 4.0dynamic動(dòng)態(tài)類型

2009-08-28 17:19:15

C#語言學(xué)習(xí)

2016-10-13 13:33:41

反射特性c#

2009-08-07 17:25:37

C# SortedLi

2009-09-18 09:35:36

C# CLR

2009-08-14 17:45:52

C# ArrayLis

2009-08-17 18:34:50

C# ChangeCo

2011-06-22 10:04:03

C#開發(fā)

2009-09-11 11:27:38

AttributeUsC# Attribut

2009-08-25 17:59:49

C#入門

2009-09-02 10:58:02

C#動(dòng)態(tài)數(shù)組

2009-08-12 15:20:21

C#事件處理

2009-08-17 13:34:02

C#異步操作

2009-08-26 13:07:07

C#交錯(cuò)數(shù)組

2009-08-27 11:43:31

C#語法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99视频在线 | 精品国产乱码久久久久久果冻传媒 | 成人免费视频在线观看 | 中文字幕日韩欧美一区二区三区 | 韩日三级 | 国产分类视频 | www.久草.com | 涩涩视频网 | 成人午夜影院 | www.日韩 | 天天操天天干天天爽 | 国产91黄色 | 日韩在线播放一区 | 欧美一区二区 | 91精品一区 | 亚洲电影免费 | 一区在线观看 | 91精品中文字幕一区二区三区 | 欧美激情一区二区三级高清视频 | 亚洲激情网站 | 欧美无乱码久久久免费午夜一区 | 欧美二区在线 | 久久久久久久久国产成人免费 | 999精品网 | 欧美精品在线免费观看 | 中国一级特黄毛片大片 | 国产精品一卡二卡三卡 | 日韩色视频 | 亚洲精品麻豆 | 欧美国产精品 | 亚洲欧美综合精品另类天天更新 | 亚洲精品在线国产 | 伊人久麻豆社区 | 国产精华一区 | 91精品国产91久久久久福利 | 波多野结衣在线观看一区二区三区 | 日韩在线免费 | 日韩国产中文字幕 | 国产精品久久久久久吹潮 | 成人老司机 | 欧美日韩精品久久久免费观看 |