最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

重溫C# clr 筆記總結(jié)

 更新時(shí)間:2013年05月13日 11:54:37   作者:  
本篇文章是對(duì)以前學(xué)習(xí)C# clr做的一些筆記,現(xiàn)在拿出來(lái)和大家分享下,希望需要的朋友能參考一下

1: .net framework 由兩個(gè)部分組成:CLR FCL。

2:在CLR中,所有錯(cuò)誤都是通過異常來(lái)報(bào)告的。

3:智能感知功能主要是靠解析元數(shù)據(jù)實(shí)現(xiàn)的

4:允許在不同語(yǔ)言之間方便的切換,并對(duì)各種語(yǔ)言進(jìn)行緊密集成是CLR的出色特性。

5:一個(gè)方法只有在首次運(yùn)行時(shí)才會(huì)由于jit造成一定的性能損失,以后對(duì)該方法的調(diào)用都以本地代碼的形式全速運(yùn)行。

 

6:方法簽名指定了參數(shù)的數(shù)量(及其順序),參數(shù)的類型;方法是否有返回值,如果有返回值,還要指定返回值的類型。

7:無(wú)論使用哪一種語(yǔ)言,類型的行為是完全一致的,因?yàn)轭愋偷男袨樽罱K由CLR的CTS來(lái)定義。

8:使用[assembly:CLSCompliant(true)] 來(lái)檢查CLS的相容性。

9:在同一程序集中,類型默認(rèn)是internal,有一個(gè)原則是微軟總是選擇公開程度最低的關(guān)鍵字,比如默認(rèn)的private。

10:在CLR中一個(gè)類型的每個(gè)成員要么是一個(gè)字段,要么是一個(gè)方法。

 

11:應(yīng)答文件csc.rsp 的作用,使用/noconfig 開關(guān)忽略局部和全局csc.rsp.

12:元數(shù)據(jù):二進(jìn)制數(shù)據(jù)塊,由幾張表構(gòu)成:分為3類:a:定義表,b:清單表,c:引用表。

13:一個(gè)托管的PE文件由4個(gè)部分構(gòu)成,PE32(+)頭,CLR頭,元數(shù)據(jù),IL。

14:程序集是一個(gè)或多個(gè)類型定義文件及資源文件的集合。

15:程序集允許我們分離可重用類型的邏輯和物理表示,如果一個(gè)程序集沒有用到,那么它將永遠(yuǎn)不會(huì)下載。

 

16:為了生成一個(gè)新的程序集,來(lái)自一個(gè)引用程序集的所有文件都必須存在,但運(yùn)行一個(gè)應(yīng)用程序時(shí),引用的程序集的所有文件不一定要全部存在。

17:程序集的版本號(hào)格式:主版本號(hào),副版本號(hào),Build號(hào),Revision號(hào)。

18:[assembly:AssemblyCulture(“de-ch”)] 將程序集的語(yǔ)言文化設(shè)置為瑞士德語(yǔ)。

19:使用msi文件可以實(shí)現(xiàn)“即需安裝”。

20:弱命名程序集之所有會(huì)成為問題,是因?yàn)閹讉€(gè)不同的程序集可能具有相同的弱名稱。

 

21:“Dll Hell” 根源:共享的Dll全部被復(fù)制到System32 目錄中,弱命名的名稱可能相同,最后安裝的會(huì)覆蓋前面的程序集。

22:之所以能將程序集拖放進(jìn)GAC 依靠的是windows explorer shell (擴(kuò)展) shFusion.dll.

23:在命令窗口cmd下,進(jìn)入gac目錄 查看gac的結(jié)構(gòu)。

24:在安裝.net framework 時(shí),會(huì)安裝兩套副本,一套編譯器/CLR目錄,另一套:GAC 子目錄。

25:ToString 方法默認(rèn)反悔this.GetType().FullName.

 

26:GetType方法是非虛方法,這樣就可以防止一個(gè)類重寫該方法,隱瞞其類型,破壞安全性。

27:命名空間和程序集沒什么關(guān)系

28:堆上的所有對(duì)象都包含兩個(gè)額外的成員:類型對(duì)象指針和同步塊索引。

29:System.Object 的GetType方法返回的是存儲(chǔ)在指定對(duì)象的“類型對(duì)象指針”成員中的地址。

30:GetType方法返回的是指向?qū)ο蟮念愋蛯?duì)象的一個(gè)指針。

 

31:編譯器直接支持的任何數(shù)據(jù)類型稱為基元類型。

32:在代表值類型實(shí)例的一個(gè)變量中,并不包含一個(gè)指向?qū)嵗闹羔槪喾醋兞恐邪瑢?shí)例本身的字段。

33:文檔將所有值類型都稱為一個(gè)結(jié)構(gòu) 或一個(gè)枚舉。

34:假如知道自己寫的代碼會(huì)造成編譯器反復(fù)對(duì)一個(gè)值類型進(jìn)行裝箱,那么換用手動(dòng)方式對(duì)值類型進(jìn)行裝箱,代碼會(huì)更小更快。

35:總結(jié)第34條:降低調(diào)用浪費(fèi)資源耗費(fèi)時(shí)間多的步驟的次數(shù)。

 

36:使用接口的方式可以允許我們更改一個(gè)已裝箱對(duì)象的字段,在C#中,不使用接口的方法是達(dá)到這個(gè)目的的。因?yàn)檫@個(gè)方式有點(diǎn)繞,所以不推薦使用需要修改字段的值類型,在設(shè)計(jì)模式中,值類型是不變的類型。

37:在內(nèi)部,ValueType的Equals 方法使用反射技術(shù)來(lái)完成字段的比較,因?yàn)榉瓷浔容^慢,所以在定義自己的值類型時(shí),應(yīng)重寫Equals方法,不要調(diào)用base.Equals.具體的重寫步驟如下:

a:如果obj == null –> false;

b: 參數(shù)引用不同對(duì)象  -> false;

c:每個(gè)字段都相等 –>check ->不相等(false)

d:true.

因?yàn)檎_的重寫Equals 方法比較復(fù)雜,在性能要求不是很嚴(yán)重的地方,可以不重寫。

38:在需要修改一個(gè)哈希表的健值對(duì)時(shí),正確的做法是 先移除再添加。

39:不要對(duì)哈希碼 進(jìn)行持久化 ,因?yàn)楣4a很容易改變,例如一個(gè)未來(lái)的版本可能使用一個(gè)不同的算法來(lái)計(jì)算對(duì)象的哈希碼。

40:元數(shù)據(jù)的格式與源代碼所使用的編程語(yǔ)言無(wú)關(guān),因此元數(shù)據(jù)的格式都是相同的,元數(shù)據(jù)是所有語(yǔ)言都可以生成和使用的公共信息,是.net framework 開發(fā)平臺(tái)的關(guān)鍵,它允許編程語(yǔ)言,類型和對(duì)象之間無(wú)縫集成。

 

41:對(duì)于任何可訪問的成員,都必須定義在一個(gè)可見的類型內(nèi)。

PS:類如果都看不到,你還能看到類里面的東西嗎?

42:類型的可見性:public    internal(默認(rèn))

成員的可見性:public protected private (默認(rèn))

43:CLR要求接口的所有成員都是公開的, 接口是個(gè)契約,是個(gè)合同,所以成員都公開才有意義。

44:C# 編譯器要求原始成員和重寫成員必須具有相同的可訪問性,CLR 允許成員的可訪問性約束更低,而不允許更高。如果父類的某個(gè)方法是protected,那么子類重寫這個(gè)方法的時(shí)候,可以選擇約束更低的

public ,但是不能選擇約束更強(qiáng)的private。

44:關(guān)鍵字 static 僅僅可以應(yīng)用于類,不能應(yīng)用于值類型(結(jié)構(gòu),枚舉),因?yàn)橹殿愋捅仨殞?shí)例化,并且沒有辦法停止和阻止該過程。

45:靜態(tài)類必須直接繼承 System.Object ,因?yàn)槔^承性僅僅適用于對(duì)象。

 

46:靜態(tài)類不能實(shí)現(xiàn)任何接口,因?yàn)橹挥惺褂妙惖膶?shí)例才能調(diào)用接口的方法,可是靜態(tài)類不能實(shí)例化。

47:只能定義靜態(tài)成員,因?yàn)殪o態(tài)類不能實(shí)例化。

48:編譯器不會(huì)在靜態(tài)類 類型中生成實(shí)例構(gòu)造器方法。

49:C# 編譯器 完全支持部分類(partial type) 特征,但是CLR 卻完全不支持,甚至CLR根本就沒有

partial關(guān)鍵字。

50:對(duì)于類型字段:CLR 會(huì)在首次引用類型時(shí)才創(chuàng)建動(dòng)態(tài)內(nèi)存,也即jit 編譯。

對(duì)于實(shí)例字段,創(chuàng)建類型實(shí)例時(shí)才分配存放字段的動(dòng)態(tài)內(nèi)存。

 

51:如果一個(gè)字段屬于引用類型,并且被標(biāo)記為readonly ,不可改變的是這個(gè)引用本身,而不是它所引用的對(duì)象。

52:構(gòu)造器是允許將類型實(shí)例初始化為有效狀態(tài)的特殊方法。

53:如果有多個(gè)實(shí)例構(gòu)造器,最好通過this關(guān)鍵字先調(diào)用默認(rèn)無(wú)參構(gòu)造函數(shù),然后再賦值。

public SomeType(int x,int y):this(){}

54:所有值類型的構(gòu)造器必須初始化值類型的所有字段,因?yàn)橹殿愋偷娜魏巫侄伪仨氃谧x取之前進(jìn)行初始化。

55:類型構(gòu)造器 最多只有一個(gè),并且永遠(yuǎn)沒有參數(shù)。

 

56:因?yàn)镃LR保證每個(gè)應(yīng)用程序域的類型構(gòu)造器只執(zhí)行一次,而且是線程安全的,所以最適合構(gòu)造

singleton 模式

57:如果希望應(yīng)用程序域關(guān)閉時(shí)能執(zhí)行某些代碼,我們可以在System.AppDomain的DomainUnload事件中注冊(cè)一個(gè)回調(diào)方法。

58:當(dāng)編譯器查找FCL 中的核心數(shù)值(Int32,Int64)等基元類型的操作符時(shí),會(huì)生成直接操作的IL指令,所以核心FCL 類型不能定義任何操作符重載方法的原因,因?yàn)榉椒ㄕ{(diào)用會(huì)影響效率。

59:CLR規(guī)范將轉(zhuǎn)換操作符重載方法定義為public 和static 方法。

60:只有方法的最后一個(gè)參數(shù)才可以使用params 關(guān)鍵字。

 

61:屬性不能作為out 或ref 參數(shù)傳遞給方法,字段則可以。因?yàn)閷傩缘谋举|(zhì)是getter 和 setter.

62:C# 編譯器 只允許接口定義方法,因?yàn)?事件,屬性,索引器 本質(zhì)上都是方法,所以也允許在接口中定義他們。

相關(guān)文章

  • unity實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)系統(tǒng)

    unity實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#實(shí)現(xiàn)標(biāo)題閃爍效果的示例代碼

    C#實(shí)現(xiàn)標(biāo)題閃爍效果的示例代碼

    在Windows系統(tǒng)中,當(dāng)程序在后臺(tái)運(yùn)行時(shí),如果某個(gè)窗體的提示信息需要用戶瀏覽,該窗體就會(huì)不停地閃爍,這樣就會(huì)吸引用戶的注意,下面我們就來(lái)看看如何使用C#實(shí)現(xiàn)這一效果吧
    2024-04-04
  • C# 實(shí)現(xiàn)ADSL自動(dòng)斷網(wǎng)和撥號(hào)的方法(適用于撥號(hào)用戶)

    C# 實(shí)現(xiàn)ADSL自動(dòng)斷網(wǎng)和撥號(hào)的方法(適用于撥號(hào)用戶)

    下面小編就為大家?guī)?lái)一篇C# 實(shí)現(xiàn)ADSL自動(dòng)斷網(wǎng)和撥號(hào)的方法(適用于撥號(hào)用戶)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-12-12
  • 詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    這篇文章主要介紹了c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-10-10
  • 如何使用LinQ To Object把數(shù)組或DataTable中的數(shù)據(jù)進(jìn)行向上匯總

    如何使用LinQ To Object把數(shù)組或DataTable中的數(shù)據(jù)進(jìn)行向上匯總

    這篇文章主要介紹了如何使用LinQ To Object把數(shù)組或DataTable中的數(shù)據(jù)進(jìn)行向上匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 判斷圖片-判斷位圖是否是黑白圖片的方法

    判斷圖片-判斷位圖是否是黑白圖片的方法

    近來(lái)工作需要判斷圖片否是是彩色的,由于是十萬(wàn)張以上的大批量理處,所以通過序程來(lái)動(dòng)自判斷。
    2013-05-05
  • C#生成二維碼的方法

    C#生成二維碼的方法

    這篇文章主要介紹了C#生成二維碼的方法,包括動(dòng)態(tài)鏈接庫(kù)dll文件的調(diào)用、代碼的實(shí)現(xiàn)與使用示例,非常實(shí)用,需要的朋友可以參考下
    2014-11-11
  • 利用WCF雙工模式實(shí)現(xiàn)即時(shí)通訊

    利用WCF雙工模式實(shí)現(xiàn)即時(shí)通訊

    這篇文章主要介紹了利用WCF雙工模式實(shí)現(xiàn)即時(shí)通訊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 解決C#運(yùn)行程序修改數(shù)據(jù)后數(shù)據(jù)表不做更新的問題

    解決C#運(yùn)行程序修改數(shù)據(jù)后數(shù)據(jù)表不做更新的問題

    近日,在使用C#連接數(shù)據(jù)庫(kù)的時(shí)候,對(duì)數(shù)據(jù)庫(kù)中的表做更新后,在當(dāng)前啟動(dòng)項(xiàng)目中去顯示表數(shù)據(jù)時(shí)雖然會(huì)發(fā)生一個(gè)更新,但是在結(jié)束程序運(yùn)行后再去觀察數(shù)據(jù)表中的記錄時(shí)發(fā)現(xiàn)并沒有發(fā)生一個(gè)變化,所以本文給大家解決一下這個(gè)問題,需要的朋友可以參考下
    2023-08-08
  • C#中Timer使用及解決重入問題

    C#中Timer使用及解決重入問題

    本文主要介紹了C#中Timer使用及解決重入問題的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02

最新評(píng)論

松溪县| 老河口市| 万山特区| 益阳市| 自治县| 衢州市| 汉源县| 乌兰察布市| 淮阳县| 安岳县| 渑池县| 清镇市| 股票| 嘉兴市| 荔浦县| 天全县| 彭州市| 汤阴县| 东乡县| 额济纳旗| 黑龙江省| 普兰店市| 塔河县| 汾阳市| 南木林县| 若尔盖县| 怀仁县| 永兴县| 鞍山市| 合阳县| 沽源县| 河源市| 科技| 临江市| 溧阳市| 白沙| 青岛市| 元江| 九江市| 冕宁县| 沙雅县|