日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
概述C#泛型機(jī)制

C#泛型是CLR類型系統(tǒng)的拓展,并且允許開(kāi)發(fā)者定義那些具有不確定細(xì)節(jié)的類型。為了加強(qiáng)代碼的可拓展性,當(dāng)代碼在實(shí)際執(zhí)行時(shí)細(xì)節(jié)才最終確定。

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)南部免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

泛型是微軟.NET Framework 2.0 的一個(gè)特征,并且促使代碼運(yùn)行更快、具有更高的維護(hù)性、更強(qiáng)健。

泛型是CLR機(jī)制的拓展,允許開(kāi)發(fā)者定義那些具有不確定細(xì)節(jié)的類型。定義為泛型的變量,其類型在最終執(zhí)行時(shí)才根據(jù)特定要求實(shí)現(xiàn)其類型。泛型折射為如下特點(diǎn):使那些可能減少無(wú)用細(xì)節(jié)的代碼實(shí)現(xiàn)成為可能。這種代碼就是泛型。

概覽C#泛型

作為任何一種新技術(shù),首先問(wèn)一下“為何有用”是很有好處的。那些對(duì)C++模板熟悉的開(kāi)發(fā)者會(huì)發(fā)現(xiàn)泛型在代碼組織中發(fā)揮了一個(gè)類似的功能。

然而,因?yàn)榉盒途哂心承└郊右饬x及限制在此并非想對(duì)CLR泛型及C++模板做過(guò)多的比較。

CLR泛型的強(qiáng)健性表現(xiàn)為:編譯時(shí)類型的安全、二進(jìn)制代碼的重用、性能及明晰。接下來(lái)將簡(jiǎn)短地描述這些特點(diǎn),之后你會(huì)對(duì)此達(dá)到更深刻的理解。舉例:設(shè)定一個(gè)擁有兩個(gè)集的類,SortedList一個(gè)特定對(duì)象集合;GenericSortedList< T>一個(gè)類型T的集合。

類型安全:當(dāng)SortedList添加了一個(gè)字符類型時(shí),存在一個(gè)字符向?qū)ο蟮碾[式轉(zhuǎn)換。同樣,如果自列表檢索一個(gè)字符類型對(duì)象時(shí),存在一個(gè)自O(shè)bject向字符類型的顯示轉(zhuǎn)換。這種運(yùn)行時(shí)類型安全的缺乏對(duì)開(kāi)發(fā)者及易于出錯(cuò)很不利。相反,使用了GenericSortedList< String>之后所有的添加及查找方法通過(guò)字符參數(shù)來(lái)運(yùn)行。由此允許程序在編譯時(shí)而不是運(yùn)行時(shí)對(duì)變量類型進(jìn)行確定及檢查。

二進(jìn)制代碼復(fù)用:開(kāi)發(fā)者為了維護(hù)性可能會(huì)選擇自SortedList派生一個(gè)SortedListOfStrings(或者利用一種安全類型封裝SortedList)來(lái)達(dá)到編譯時(shí)類型安全。通過(guò)這種方法實(shí)現(xiàn)的問(wèn)題在于新代碼需要在實(shí)現(xiàn)類型安全的列表重寫(xiě),由此寫(xiě)代碼會(huì)很吃力。而通過(guò)GenericSortedList< T>,所要做的就是實(shí)例化預(yù)期元素類型T。作為一個(gè)附加值,泛型代碼產(chǎn)生于運(yùn)行時(shí),由此兩種基于未涉及的類型(例如GenericSortedList< String>和GenericSortedList< FileStream>)能夠復(fù)用大部分的JIT編譯代碼。即使擴(kuò)展是不同的集合,這也可以實(shí)現(xiàn)。通過(guò)在JIT編譯時(shí)實(shí)現(xiàn)泛型代碼的拓展,CLR機(jī)制自然減少了對(duì)硬盤及內(nèi)存的膨脹并保持類型不同集合間的轉(zhuǎn)換。

性能:這是軟件的基本。如果在JIT編譯時(shí)而不是在執(zhí)行過(guò)程中進(jìn)行類型檢查,性能會(huì)得到提高。在托管代碼中,參數(shù)及值的實(shí)例化需要不斷進(jìn)行裝盒及拆盒。避免這樣的實(shí)例化對(duì)性能會(huì)有顯著影響。一個(gè)擁有一百萬(wàn)個(gè)整型數(shù)的數(shù)組排序泛型方法比非泛型方法快三倍。這是因?yàn)橥耆缘糁档难b盒步驟。同樣對(duì)字符參數(shù)的數(shù)組排序通過(guò)泛型方法因不必在運(yùn)行時(shí)進(jìn)行類型檢查,性能會(huì)會(huì)提高20%。

明晰:C#泛型的明晰有多種形式。首先是限制,限制可以影響泛型代碼的擴(kuò)張;通過(guò)泛型,避免了使用C++模板出現(xiàn)的那種未知編譯錯(cuò)誤。在GenericSortedList< T>例子中,集類的作用范圍限定在T能夠?qū)崿F(xiàn)的類型及進(jìn)行排序。當(dāng)然泛型方法也可以通過(guò)類型接口而不必使用特定語(yǔ)法來(lái)使用。由此,在編譯時(shí)的類型安全增加了程序代碼的明晰。本文將詳細(xì)講解限制、類型拓展以及類型安全。

C#的Generic、Java的Generic、C++的Template三者的不同

C++的模板及Java的泛型基于各自的編譯器。編譯器自實(shí)例化泛型或模板時(shí)構(gòu)造代碼,C++的機(jī)制會(huì)引起代碼膨脹及減少類型重構(gòu)的順滑性;Java的泛型本質(zhì)上是將泛型代碼視為一套自動(dòng)實(shí)例化機(jī)制,這種機(jī)制會(huì)引發(fā)泛型實(shí)例化間的意外類型匹配。

【編輯推薦】

  1. 總結(jié)C#哈希表的用法
  2. 不一樣的入門:看C# Hello World的17種寫(xiě)法
  3. 什么是WMI?及其示例
  4. 從C#到C++容易出現(xiàn)的問(wèn)題解答
  5. 淺議.NET、ASP.NET和C#的關(guān)系

網(wǎng)頁(yè)題目:概述C#泛型機(jī)制
地址分享:http://www.5511xx.com/article/cdceoip.html