精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解析C# CLR的15個細節(jié)

開發(fā) 后端
本文整理了關(guān)于C# CLR的15個知識點。這些都是最為基本的知識,但由于現(xiàn)在大家對CLR還不是很了解,所以看起來會有一絲不理解,還是希望能給大家?guī)韼椭?/div>

本文整理了關(guān)于C# CLR的15個知識點。這些都是最為基本的知識,但由于現(xiàn)在大家對CLR還不是很了解,所以看起來會有一絲不理解,還是希望能給大家?guī)韼椭?/P>

1、C# CLR之foreach的性能問題

foreach(string s in rows) { foo(s); }的實現(xiàn)是:

  1. IEnumerator e = rows.GetEnumerator();  
  2. try {  
  3.   string s;  
  4.   while (e.MoveNext()) {  
  5.     s = (String) e.Current;  
  6.     foo(s);  
  7.   }  
  8. }  
  9. finally {  
  10.   IDisposable d = e as IDisposable;  
  11.   if (d != null) d.Dispose();  

每一步都調(diào)用了e.MoveNext()和e.Current兩個方法;而大多數(shù)時候,完全有可能優(yōu)化為一次調(diào)用。顯然這對性能是有影響的。雖然foreach對于數(shù)組作了單獨的優(yōu)化(編譯成for循環(huán)),但這還是值得注意的。

那么,怎么做比較快?

對于List等Collection,可以用ForEach(Action action),F(xiàn)indAll(Predicate match),ConvertAll(Converter converter)等方法。它們比較快,但不是所有實現(xiàn)IEnumerable的類都提供。

LINQ追求compatiblity,而不是performance。因此LINQ的實現(xiàn)完全采用了foreach。值得注意。

2、C# CLR之yield的實現(xiàn)原理

實現(xiàn)一個支持IEnumerable的對象時,一般會用到y(tǒng)ield關(guān)鍵字,這樣foreach遍歷這個對象時,可以做到lazy evaluation。例如:

  1. class MyCollection: IEnumerable<char> 
  2. {  
  3.   private string s; ...  
  4.   public IEnumerable<char> GetEnumerator()
  5.  {  
  6.     for (int i=0; i<s.Length; i++)
  7.   {  
  8.       yield return s[i];  
  9.     }  
  10.  }  

執(zhí)行到y(tǒng)ield時函數(shù)返回,下次調(diào)用時,接著上次運行的位置繼續(xù)運行。這個continuation的效果是怎么做的呢?

包含yield的函數(shù)都會被編譯器做成一個狀態(tài)機。每調(diào)一次,就接著上次的狀態(tài)繼續(xù)運行。簡單有效啊。我一直以為要有什么特殊的辦法呢。

3、C# CLR之exception handling的實現(xiàn)決定了throw的performance較差。

可以用Int32.TryParse代替try{Int32.Parse…}catch{…},稍快一點。類似地建議使用Dictionary.TryGetValue。

4、C# CLR之.Net CLR執(zhí)行引擎對應于MSCorWks.dll和MSCorEE.dll這兩個文件。

5、C# CLR之.Net 3.0, 3.5沒有對CLR作任何修改。

所有增加的東西(比如LINQ)都是syntactic sugar,只改了C#編譯器而已。

6、C# CLR之AppDomain

如果把.Net虛擬機看成一個虛擬操作系統(tǒng),AppDomain的概念則類似于操作系統(tǒng)中的進程。

可以用代碼創(chuàng)建一個AppDomain,然后動態(tài)加載/卸載assembly,還可以設置權(quán)限,相當于提供了一個沙箱。

跨AppDomain的調(diào)用類似于RPC。

調(diào)用某個AppDomain內(nèi)部的obj.foo(x)時,.net會自動幫你做出一個proxy object,你所調(diào)用的obj其實是一個proxy object。傳給foo的參數(shù)x會先被被marshal,以保證AppDomain被安全隔離。

誰用AppDomain?SQL Server用這個技術(shù)實現(xiàn)managed存儲過程。IIS會把不同的Web Application放在不同的AppDomain里,以實現(xiàn)動態(tài)裝卸。

7、C# CLR之動態(tài)載入Assembly的陷阱

Sytem.Reflection.Assembly.LoadFrom(pathName)并不會載入pathName所指定的dll,而是看看pathName那個dll的名字、版本,然后到系統(tǒng)默認位置去找。(陷阱啊)

8、C# CLR之C#里用reflection創(chuàng)建一個新對象

用Activator.CreateInstance。(奇怪的名字啊。)

9、C# CLR之C#泛型之“where”

可以用“where”來限定T的接口。例如

static T min(T arg1, T arg2) where T: IComparable {…}

不寫where的話,就不能調(diào)arg1.CompareTo(arg2)。

為啥不把T換成IComparable?一是為保證arg1, arg2一定是同一個類型,二是泛型的效率更高。(JIT會為不同類型的T各生成一份native code,從而避免了boxing)

更多where的細節(jié):

* 要想調(diào)T t1 = new T(),必須聲明where T: new()或者where T: struct

* 要寫T t2 = null,必須聲明where T: class

* T z = default(T)是一個特殊的用法,會把T的每個bit都置為0。

* 假設定義了Foo(T x, T y),則if (x==null) … 是可以通過的,雖然C#中value type的值不允許為null(例如int a=null是錯的)。這是因為,此時的語義是一致的,反正if里面的操作不被執(zhí)行就是了,所以編譯器對這種特殊情況網(wǎng)開一面。

* if (x==y)不行,除非寫了where T: baseclass。(這里我也沒理解為啥。。。>_<好像說是不知道應該用reference比較還是value比較?)

10、C# CLR之匿名函數(shù)的背后。。。

在C# 2.0以后可以用匿名的delegate,如ThreadPool.QueueWorkItem(delegate (Object obj) { Console.WriteLine(obj); })

但編譯器的實現(xiàn)會帶來一點點overhead,會生成一個小小的靜態(tài)WaitCallback對象,可以用Reflector看生成的代碼。(不要打開Reflector的optimization,否則就看不到了)

如果是自己寫的話,可以選擇每次動態(tài)建立一個WaitCallback對象然后銷毀。當然這樣做性能可能差一些,但這里的idea是:編譯器會自動做一些事,但不一定是你所希望的。在使用這些高級feature前,最好先搞清楚背后發(fā)生了什么。

另一個細節(jié):如果匿名函數(shù)中使用了外層函數(shù)的局部變量(即所謂的function closure),會導致創(chuàng)建額外的shared-state object,把用到的局部變量做成一個新對象傳給匿名函數(shù)。

上述描述同樣適用于lambda函數(shù)。因為C#的lambda函數(shù)就是匿名函數(shù),改了改語法而已。

11、C# CLR之Nullable type

雖然C#要求value type的值不能是null,但寫數(shù)據(jù)庫程序時經(jīng)常遇到某個值是null的情況。為此,C#2.0引入了Nullable type。例如,int? x = null。

int? x其實就是一個縮寫,等價于Nullable x。Nullable是預定義的一個類,簡單地對x作了封裝。(因為增加了一個類,顯然對性能稍微有點影響)

這個小改動的實現(xiàn)其實很麻煩,需要修改CLR。為什么?因為原先的x是一個value type,現(xiàn)在則變成了一個object,看這個:

  1. void M(Object o)   
  2. {  
  3.   if (o=null) {Bar();}  
  4. }  
  5. void F()  
  6. {  
  7.   int? x = null;  
  8.   M(x);  
  9. }  
  10.  

如果CLR不專門做修正的話,上面的Bar()不會被執(zhí)行。(思考題:想一想為什么~)

另外,C#還引入了一個默認值運算符“??”,稱為null-coalescing operator。

一句話,x ?? value是 (x==null) ? value: x的簡寫。

12、C# CLR之屬性(property)的簡單聲明

  1. public int x {get; private set;} 

是個很好用的句式。

注意,

  1. public int x {get;} 

是錯誤的,不能通過編譯。

13、C# CLR之Extension method

  1. //Extension method  
  2. static class MyExtMethods   
  3. {  
  4.   static public GetFirstLetter(this string s) {return s[0];}  
  5. }  
  6.  

然后就可以用string s = “hello”; char ch = s.GetFirstLetter()了。

原理很簡單,編譯器把上面那句話翻譯成MyExtMethods.GetFirstLetter(s)。LINQ就用到了這個技術(shù)。

14、C# CLR之匿名類型的背后。。。

  1. var o = new {name = “Xiangpeng”, id = 123 }; 

在這背后是編譯器生成的一個匿名類,包含了兩個只讀屬性,形如public int id { get {return _id;} }為什么不做成可讀寫的呢?

很微妙。匿名類自動生成了GetHashCode(),返回的是對所有屬性的hash code做XOR的結(jié)果。如果允許修改屬性值,那么Hash code的值就會變化;而這個可能會出問題~保險起見,只讀吧。

15、C# CLR之每個thread占1M物理內(nèi)存

在Win32編程中thread的1M stack空間是Reserve的,直到真正用時才占用物理內(nèi)存;而在.net中,這1M空間直接被commit。

還好,可以在新建thread時指定stack size。不過這也比較危險,設小了怕不夠。實際上,最好盡量避免創(chuàng)建thread——太多的thread要么導致CPU競爭和context switch,要么都block著浪費內(nèi)存。建議是:能用ThreadPool就用ThreadPool。

以上就是對C# CLR的比較介紹。

【編輯推薦】

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

2009-09-18 09:59:39

C# CLR

2009-09-18 09:02:45

CLR Via C#

2025-10-31 01:33:00

2024-06-24 03:00:00

2024-03-20 10:59:37

開源

2009-09-14 18:34:32

C# List排序

2009-10-23 11:31:05

CLR Via C#調(diào)

2009-09-17 18:56:22

CLR Via C#

2009-10-22 19:11:25

CLR Via C#教

2011-06-22 10:04:03

C#開發(fā)

2009-09-09 14:40:15

C# XML解析

2009-08-27 17:40:21

C#接口的作用

2009-08-31 17:47:43

C#接口使用

2009-08-31 18:01:41

C#接口事件

2009-08-31 17:16:12

C#實現(xiàn)接口

2009-09-02 16:30:20

C#定義數(shù)組

2009-09-07 15:27:04

C# MessageB

2009-09-02 16:41:56

C#聲明數(shù)組

2009-08-31 17:30:10

C#接口的作用

2009-09-17 16:41:12

C#組件編程
點贊
收藏

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

在线观看一区二区视频| 捆绑调教一区二区三区| 亚洲精品美女久久久久| 天天摸天天碰天天添| wwwww在线观看免费视频| 精品一区二区三区免费播放| 欧美激情一级二级| 国产ts在线播放| 电影一区二区三区久久免费观看| 亚洲综合在线视频| 日韩精品成人一区二区在线观看| 精品人妻伦一二三区久久| 亚洲深夜影院| 美日韩丰满少妇在线观看| 一女三黑人理论片在线| 经典三级久久| 亚洲第一成年网| 一区二区三区免费看| 国产 日韩 欧美 综合| 人人精品人人爱| 久久久久一本一区二区青青蜜月| 日韩一级片在线免费观看| а√中文在线天堂精品| 欧美色涩在线第一页| 黄色www网站| 大地资源网3页在线观看| 91首页免费视频| 99在线视频免费观看| 亚洲精品国产精品国自产网站按摩| 欧美精品福利| 精品国模在线视频| 五月天综合视频| 亚洲精品久久一区二区三区777 | 美美哒免费高清在线观看视频一区二区| 欧美不卡视频一区发布| 久久久视频6r| 少妇精品久久久一区二区| 精品第一国产综合精品aⅴ| 中文字幕精品一区二区三区在线| 欧美成人a交片免费看| 亚洲永久精品大片| 99精品一区二区三区的区别| 2019中文字幕在线视频| 91理论电影在线观看| 国产精品久久国产精品| 国产成人久久精品77777综合 | 久久久精品五月天| 久久免费国产视频| 精品97人妻无码中文永久在线| 91欧美在线| 少妇精69xxtheporn| 日本性高潮视频| 亚洲精品一区二区三区新线路 | 欧美乱大交xxxxx| 纪美影视在线观看电视版使用方法| 欧美亚洲国产日韩| 亚洲国产成人精品电影| 欧美日韩一区二区三区四区五区六区 | 亚洲欧洲精品一区二区三区 | 野花国产精品入口| 韩剧1988免费观看全集| 日本一本高清视频| 一二三区精品| 欧美最顶级丰满的aⅴ艳星| av资源免费观看| 免费欧美日韩| 国产精品av免费在线观看| 超碰在线免费97| 蜜桃久久av一区| 成人久久18免费网站图片| 国产精品综合在线| 国产福利91精品| 国产综合 伊人色| 免费在线黄色影片| 欧美激情中文字幕一区二区| 亚洲精蜜桃久在线| v片在线观看| 亚洲一区在线播放| 激情综合在线观看| 亚洲综合av一区二区三区| 欧美在线视频不卡| 国内av免费观看| 国产精品一区二区中文字幕| 亚洲精品自拍第一页| 一级片久久久久| 久久久久蜜桃| 97精品国产91久久久久久| youjizz在线视频| 九九在线精品视频| 国产亚洲情侣一区二区无| 久草福利在线| 有码一区二区三区| 久久无码高潮喷水| 日韩在线视频不卡| 成人免费看黄| 欧美猛男超大videosgay| 精品人妻一区二区乱码| 夜色77av精品影院| 操日韩av在线电影| 国产乱国产乱老熟| 国产一区在线精品| 蜜桃av噜噜一区二区三| 国产剧情在线| 欧美午夜精品久久久久久浪潮| 91福利国产成人精品播放| 999久久精品| 有码中文亚洲精品| 国产在线观看你懂的| 日韩电影在线观看电影| 97影院在线午夜| 成人jjav| 欧美视频免费在线| 熟妇无码乱子成人精品| 精品视频久久| 欧美一区二区三区免费视| 国产免费黄色录像| 国产偷v国产偷v亚洲高清| 成年人网站国产| 亚洲精品毛片| 亚洲人精选亚洲人成在线| 黄色在线观看免费| 九色|91porny| 亚洲欧美丝袜| 成人一区福利| 亚洲国产精品99久久| 亚洲波多野结衣| 奇米精品一区二区三区在线观看一| 国产精品视频500部| 毛片在线看网站| 欧美亚洲综合一区| 成人免费av片| 国产精品色网| 黄色99视频| 成人超碰在线| 日韩欧美的一区二区| 午夜国产福利视频| 日韩综合一区二区| 免费在线观看91| 欧美亚洲日本精品| 亚洲激情视频在线| 99免费在线观看| 成人av在线一区二区三区| www.一区二区.com| 视频二区欧美毛片免费观看| 久久亚洲影音av资源网| 国产精品无码久久久久成人app| 国产欧美日韩卡一| 午夜激情福利在线| av一区二区高清| 国产精品美女网站| 天堂中文8资源在线8| 欧美视频第二页| 99精品欧美一区二区| 久久久久久婷| 日产中文字幕在线精品一区| av有声小说一区二区三区| 亚洲欧美中文日韩在线v日本| 影音先锋亚洲天堂| 久久理论电影网| 手机看片福利盒子久久| 成人一区而且| 91免费看片网站| 性欧美高清come| 亚洲大尺度美女在线| 欧美三级一区二区三区| 久久亚洲一区二区三区明星换脸| 久草青青在线观看| 成人高清电影网站| 成人观看高清在线观看免费| 最新av在线播放| 亚洲第一视频网| 综合网在线观看| 国产精品色在线| 1314成人网| 亚洲美女一区| 欧美一区二区三区四区在线观看地址| 成人va天堂| 久久亚洲国产精品| 色婷婷av一区二区三区之e本道| 欧美日韩国产区| 性猛交娇小69hd| 国产九九视频一区二区三区| 人妻久久久一区二区三区| 北条麻妃国产九九九精品小说| 成人欧美一区二区三区黑人孕妇| 国产盗摄一区二区| 亚洲欧美国内爽妇网| 91影院在线播放| 亚洲成在人线免费| 亚洲精品国产精品国自产网站| 激情综合网av| 丰满爆乳一区二区三区| 欧美gayvideo| 国内精品**久久毛片app| 精品免费av一区二区三区| 久久成人精品一区二区三区| 日av在线播放| 3atv在线一区二区三区| 日本三级小视频| 综合激情成人伊人| 好吊视频在线观看| 国产精品18久久久久久久久| 日韩a在线播放| 欧美在线观看天堂一区二区三区| 久久精品一二三区| 国产一区二区三区亚洲综合| 日韩av123| 丰满大乳少妇在线观看网站| 中文字幕少妇一区二区三区| 亚洲老妇色熟女老太| 欧美色综合久久| 男女视频免费看| 亚洲精品免费看| 懂色av蜜臀av粉嫩av永久| av亚洲精华国产精华| 国产精欧美一区二区三区白种人| 校园春色综合网| 久久男人资源站| 婷婷伊人综合| 日韩一区二区三区高清| 精品欧美午夜寂寞影院| 91久久大香伊蕉在人线| 欧洲精品久久久久毛片完整版| 欧美性资源免费| 黄色大片在线| 欧美日本黄视频| 日本免费中文字幕在线| 亚洲午夜av久久乱码| 天堂网在线资源| 精品国产精品一区二区夜夜嗨| 国产美女www爽爽爽视频| 欧洲亚洲国产日韩| 色av性av丰满av| 精品久久香蕉国产线看观看亚洲| 欧美激情一区二区视频| 中文字幕一区二区三区精华液| 日韩视频在线观看免费视频| 97aⅴ精品视频一二三区| 国产chinese中国hdxxxx| 成人精品在线视频观看| 国产吃瓜黑料一区二区| 国产精品自在欧美一区| 久久精品亚洲天堂| 久久99国产精品免费网站| 深夜黄色小视频| 捆绑紧缚一区二区三区视频| 九九热免费精品视频| 日韩和的一区二区| 亚洲黄色小视频在线观看| 日韩av一级片| 日本肉体xxxx裸体xxx免费| 日本不卡免费在线视频| 在线观看的毛片| 捆绑调教一区二区三区| 伊人国产精品视频| 国产福利一区二区三区在线视频| 国产精品偷伦视频免费观看了| 成人性生交大片免费| 黄色性视频网站| 91在线观看地址| 蜜臀久久99精品久久久久久| 国产日韩欧美制服另类| 国产精品久久国产精麻豆96堂| 中文字幕日本不卡| 欧美成人免费看| 午夜在线成人av| 无码免费一区二区三区| 欧美日韩三级一区| 国产婷婷在线视频| 日韩久久久精品| 天天干天天舔天天射| 国产亚洲精品91在线| 日本在线视频网| 欧美黑人性视频| 依依综合在线| 国产一区欧美二区三区| 日韩欧洲国产| 欧美一区1区三区3区公司| 99久久久久国产精品| 国产爆乳无码一区二区麻豆| 亚洲精品视频啊美女在线直播| 黄色一级一级片| 激情久久五月天| 国产激情视频网站| 中文字幕免费观看一区| 波多野结衣家庭教师| 欧美日韩在线免费观看| 一级片在线免费观看视频| 精品久久久久久久久久久久久久久| 天堂资源最新在线| 日韩在线视频免费观看| 国产探花视频在线观看| 国产精品第一视频| 66精品视频在线观看| 日本中文不卡| 亚洲视频精品| jizzzz日本| 91偷拍与自偷拍精品| √天堂中文官网8在线| 色综合久久久久综合99| 国产高潮在线观看| 一本色道久久综合狠狠躁篇怎么玩| av电影免费在线观看| 日韩av电影在线免费播放| 亚洲网一区二区三区| 色女孩综合网| 亚洲三级观看| 国产成人av免费观看| 国产精品美日韩| 好看的av在线| 日韩欧美国产一区二区三区| 91在线观看| 欧美在线视频观看| 91精品啪在线观看国产爱臀| 亚洲国产日韩综合一区| 一区二区高清| 欧美极品jizzhd欧美仙踪林| 国产精品久久久久久久裸模| 国产成人亚洲精品自产在线| 日韩一级二级三级| 一本一道波多野毛片中文在线 | 黄色一级视频在线观看| 欧美日韩精品一区二区| 韩国中文免费在线视频| 午夜精品国产精品大乳美女| 亚洲高清999| 福利网在线观看| 蜜臀va亚洲va欧美va天堂 | 亚洲成a人片77777在线播放 | mm视频在线视频| 91香蕉视频在线下载| 888久久久| 午夜一区二区视频| 国产精品女主播在线观看| 天天操天天干天天摸| 亚洲欧美日韩国产成人| 亚洲最大网站| 欧美久久久久久一卡四| 亚洲免费在线| 女~淫辱の触手3d动漫| 精品高清美女精品国产区| 日韩一级片免费在线观看| 久久久久久久久久久网站| 国产成人精品亚洲线观看| 人人妻人人澡人人爽欧美一区| 国产精品一区二区三区四区| 欧美日韩在线国产| 91精品国产综合久久久蜜臀图片| 欧美成人精品一区二区男人看| 国产精品一区二区三区久久| 久久中文亚洲字幕| 五月天丁香花婷婷| 亚洲欧美另类图片小说| 国产夫妻性生活视频| 欧美肥婆姓交大片| 高清欧美性猛交xxxx黑人猛| 成熟丰满熟妇高潮xxxxx视频| 91丨九色丨尤物| 亚洲 欧美 中文字幕| 在线视频国产日韩| 久久精品97| gogogo免费高清日本写真| 国产精品2024| 国产精品黄色网| 亚洲色图欧美制服丝袜另类第一页| av在线日韩| a级黄色片网站| 成人精品鲁一区一区二区| 一级免费在线观看| 国产亚洲美女精品久久久| 国产人妖一区| 国产a级黄色大片| 91小视频免费看| 亚洲视频在线观看免费视频| 九九精品在线播放| 日韩av字幕| 99热一区二区| 亚洲一二三区在线观看| 欧美日韩激情视频一区二区三区| 国产精品免费网站| 国产精品sm| 中文字幕国产专区| 337p亚洲精品色噜噜噜| a√中文在线观看| 水蜜桃亚洲精品| 成人不卡免费av| 波多野结衣高清视频| 九九久久久久99精品| 最近国产精品视频| 911av视频| 狠狠爱在线视频一区| 黄网站免费在线播放| 黑人另类av| 国产综合久久久久影院| 免费看日韩毛片| 久久中文字幕在线视频| 五月天亚洲色图| 久久aaaa片一区二区| 在线精品视频小说1| 成人福利影视|