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

淺析C# CLR的語(yǔ)言特性

開(kāi)發(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在子類中重寫(xiě)基類的方法;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í)通過(guò)給類型添加beforefieldinit 元數(shù)據(jù)特性)。C#編譯器對(duì)沒(méi)有顯示聲明靜態(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ù)的最開(kāi)始位置調(diào)用基類構(gòu)造方法,不管在派生類型本身還是基類的構(gòu)造函數(shù)中,對(duì)象的實(shí)際類型都是派生類型。在這樣的機(jī)制下,有些問(wèn)題需要謹(jǐn)慎處理,例如如果基類在構(gòu)造函數(shù)中調(diào)用被override過(guò)的virtual方法,而這時(shí)派生類的構(gòu)造函數(shù)并沒(méi)有執(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ì)算堆棧上,只不過(guò)無(wú)法轉(zhuǎn)換時(shí)一個(gè)拋異常,另一個(gè)將null放在堆棧中。

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

5. C# CLR之修飾符

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

protected,可在派生類中調(diào)用,無(wú)論派生類型是否在同一個(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)用方都沒(méi)有明確的職責(zé)要求。因此對(duì)于out型的參數(shù),如果在調(diào)用之前沒(méi)有初始化賦值,會(huì)產(chǎn)生一個(gè)編譯器錯(cuò)誤。

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

【編輯推薦】

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

2009-09-18 15:53:37

C# 3.0新語(yǔ)言特性

2009-09-18 09:02:45

CLR Via C#

2009-08-03 16:28:53

Java語(yǔ)言與C#語(yǔ)言

2009-07-31 17:28:35

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

2009-05-26 09:28:22

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

2009-08-19 16:50:32

Visual C#C#語(yǔ)言特性

2009-08-28 17:19:15

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

2016-10-13 13:33:41

反射特性c#

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2009-09-18 09:35:36

C# CLR

2009-08-07 17:25:37

C# SortedLi

2011-06-22 10:04:03

C#開(kāi)發(fā)

2009-08-25 17:59:49

C#入門(mén)

2009-09-02 10:58:02

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

2009-09-11 11:27:38

AttributeUsC# Attribut

2009-08-10 14:43:03

C#函數(shù)Convert

2009-09-11 09:15:06

C# get方法

2009-08-21 15:57:58

C# DataSour

2009-07-31 16:00:30

C#函數(shù)重載
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲精品在线视频 | 国产精品久久久久久久久久免费看 | 国产成人精品免费视频大全最热 | 亚洲丝袜天堂 | 亚洲午夜精品一区二区三区他趣 | 国产欧美精品区一区二区三区 | 欧美精品一区二区三区一线天视频 | 国产成人a亚洲精品 | 国产午夜精品一区二区三区嫩草 | 亚洲成人精品在线观看 | 欧美日韩一区二区三区在线观看 | 成人国产综合 | 亚洲交性 | 美女一级黄 | 国产中文视频 | 精品久| 成人羞羞国产免费视频 | 欧美中文一区 | 国产在线网站 | 天天插天天射天天干 | 中文字幕在线免费 | 亚洲精久| 亚洲午夜视频在线观看 | 国产一区二区三区四区五区加勒比 | 免费在线一区二区三区 | 久久精品国产一区二区三区不卡 | 成人久久视频 | 亚洲精品一区二区三区四区高清 | 亚洲综合资源 | 国产有码 | 久久亚洲一区 | 婷婷综合网 | 免费一二区 | 久久夜视频 | 五月婷婷激情网 | 91精品国产欧美一区二区成人 | 国产一区二区三区日韩 | 欧美性大战久久久久久久蜜臀 | 国产成人精品免费视频大全最热 | 中文字幕不卡一区 | 欧美黑人一区二区三区 |