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

概述C#泛型機制

開發 后端
C#泛型是CLR類型系統的拓展,本文概述了C#泛型,以及C#的 Generic、Java的Generic、C++的Template三者之間的不同。

C#泛型是CLR類型系統的拓展,并且允許開發者定義那些具有不確定細節的類型。為了加強代碼的可拓展性,當代碼在實際執行時細節才最終確定。

泛型是微軟.NET Framework 2.0 的一個特征,并且促使代碼運行更快、具有更高的維護性、更強健。

泛型是CLR機制的拓展,允許開發者定義那些具有不確定細節的類型。定義為泛型的變量,其類型在最終執行時才根據特定要求實現其類型。泛型折射為如下特點:使那些可能減少無用細節的代碼實現成為可能。這種代碼就是泛型。

概覽C#泛型

作為任何一種新技術,首先問一下“為何有用”是很有好處的。那些對C++模板熟悉的開發者會發現泛型在代碼組織中發揮了一個類似的功能。

然而,因為泛型具有某些附加意義及限制在此并非想對CLR泛型及C++模板做過多的比較。

CLR泛型的強健性表現為:編譯時類型的安全、二進制代碼的重用、性能及明晰。接下來將簡短地描述這些特點,之后你會對此達到更深刻的理解。舉例:設定一個擁有兩個集的類,SortedList一個特定對象集合;GenericSortedList< T>一個類型T的集合。

類型安全:當SortedList添加了一個字符類型時,存在一個字符向對象的隱式轉換。同樣,如果自列表檢索一個字符類型對象時,存在一個自Object向字符類型的顯示轉換。這種運行時類型安全的缺乏對開發者及易于出錯很不利。相反,使用了GenericSortedList< String>之后所有的添加及查找方法通過字符參數來運行。由此允許程序在編譯時而不是運行時對變量類型進行確定及檢查。

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

性能:這是軟件的基本。如果在JIT編譯時而不是在執行過程中進行類型檢查,性能會得到提高。在托管代碼中,參數及值的實例化需要不斷進行裝盒及拆盒。避免這樣的實例化對性能會有顯著影響。一個擁有一百萬個整型數的數組排序泛型方法比非泛型方法快三倍。這是因為完全略掉值的裝盒步驟。同樣對字符參數的數組排序通過泛型方法因不必在運行時進行類型檢查,性能會會提高20%。

明晰:C#泛型的明晰有多種形式。首先是限制,限制可以影響泛型代碼的擴張;通過泛型,避免了使用C++模板出現的那種未知編譯錯誤。在GenericSortedList< T>例子中,集類的作用范圍限定在T能夠實現的類型及進行排序。當然泛型方法也可以通過類型接口而不必使用特定語法來使用。由此,在編譯時的類型安全增加了程序代碼的明晰。本文將詳細講解限制、類型拓展以及類型安全。

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

C++的模板及Java的泛型基于各自的編譯器。編譯器自實例化泛型或模板時構造代碼,C++的機制會引起代碼膨脹及減少類型重構的順滑性;Java的泛型本質上是將泛型代碼視為一套自動實例化機制,這種機制會引發泛型實例化間的意外類型匹配。

【編輯推薦】

  1. 總結C#哈希表的用法
  2. 不一樣的入門:看C# Hello World的17種寫法
  3. 什么是WMI?及其示例
  4. 從C#到C++容易出現的問題解答
  5. 淺議.NET、ASP.NET和C#的關系
責任編輯:book05 來源: CENT
相關推薦

2009-09-02 17:38:16

C#泛型支持

2009-08-24 15:12:13

C# 泛型接口

2009-08-24 18:15:24

C# Dictiona

2009-06-24 10:25:25

C#泛型

2009-08-24 14:51:25

C# 泛型泛型類型

2009-08-24 15:38:21

C# 泛型數組

2009-08-24 14:43:35

C# 泛型

2009-08-24 14:20:13

C# 強制類型轉換

2009-09-01 16:14:11

C#泛型

2009-08-24 17:58:19

C# 泛型集合

2009-08-24 17:27:05

C#泛型應用

2009-08-24 16:39:19

C# 泛型應用

2009-08-26 18:02:05

C#泛型問題

2009-09-02 18:03:19

C#實現泛型類

2009-08-24 11:35:20

C# 泛型應用

2009-08-24 10:29:39

C# 泛型

2009-08-24 18:22:05

C# 泛型編程

2009-08-24 15:50:23

C# 泛型C# 泛型委托

2013-03-20 09:27:33

C#泛型

2009-08-24 13:31:38

C# 泛型約束
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av一区在线观看 | 精品国产一区二区三区久久久四川 | 99在线免费观看 | gogo肉体亚洲高清在线视 | 精品国产一区二区在线 | 亚洲免费视频网站 | 欧美久久一区 | 色黄视频在线 | 三级视频在线观看电影 | 成人欧美一区二区三区黑人孕妇 | 亚洲在线一区二区三区 | 成人国产精品久久 | 在线观看深夜视频 | 日本精品视频在线 | 欧美精品在线视频 | 免费一区二区在线观看 | 放个毛片看看 | 欧美激情视频一区二区三区免费 | 久久男人 | 中文字幕国产视频 | 久久亚洲精品久久国产一区二区 | 91麻豆精品国产91久久久更新资源速度超快 | 99免费在线观看 | 亚洲精品久久久久久久久久吃药 | 91久久久久久久久久久 | 久久新视频 | 国产真实精品久久二三区 | 夜夜操操操 | 精品亚洲91| 欧美激情在线观看一区二区三区 | 你懂的av| 日韩欧美在线视频观看 | 亚洲成人av| 国产精品美女久久久久久久网站 | 欧美一区二 | 九色在线观看 | 欧美日韩精品一区二区三区四区 | 久久一区精品 | 日韩一区二区在线视频 | 在线播放国产一区二区三区 | 久久综合久色欧美综合狠狠 |