程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#語法(1):泛型

C#語法(1):泛型

編輯:.NET實例教程

C#泛型(C# Generics)

  1. 概述
  2. 什麼是泛型
  3. 如何使用泛型
  4. 泛型約束

C#泛型概述

先看一個通用的數據結構示例:

結構類:

結構類:

public class stack

{

   object[] m_Items;

  public void Push(object item)

{……}

public object Pop()

{……}

}

基於object解決方案存在的問題

-性能問題:

  • 值類型Push時要裝箱處理,Pop時要拆箱處理,造成更多的垃圾碎片,增加垃圾收集的負擔
  • 引用類型也有強制轉換的開銷

-類型安全問題(更為嚴重)

  • 編譯時任何類型都可以轉換成object,無法保證運行時的類型安全

解決性能和類型安全的方法:

-編寫特定類型的數據結構。

基於編寫特定類型的數據結構的問題:

-影響工作效率。

-代碼冗余,重用率低。

-一個數據結構變更,要將所有類型的數據結構做相應的修改。

-為了提供不可預知的數據類型的支持,還是要提供object類型接口,類型安全的問題又會出現。

為了解決上面所遇到的問題,現在引入泛型的概念。

什麼是泛型?

  • 通過泛型可以定義類型安全類,而不損害類型安全、性能工作效率
  • 可以使用任何類型來聲明和實例化。
  • 聲明和實例化時都必須用一個特定的類型來代替一般類型T
  • 通用數據結構采用泛型實現。

編程模型的有點在於,內部算法和數據操作保持不變,而實際數據類型可以在使用時指定。

泛型是如何實現的?

  • 在.Net 2.0中,泛型在IL(中間語言)和CLR本身中具有本機支持。
  • 編譯泛型類時,就像編譯其他類一樣,泛型僅保留一個占位符。
  • 而用特定類型實例化泛型代碼時,編譯時會將泛型替換為實例化的特定類型。

泛型的好處

  • 一次性的開發、測試和部署代碼,通過任何類型()來重用它
  • 編譯器支持和類型安全
  • 不會強行對值類型進行裝箱和拆箱操作,或者對引用類型進行上下強制類型轉換,所以性能得到顯著提高

                -值類型,性能通常會提高200%

               -引用類型,在訪問類型時,可以預期性能最多提高100%(當然,整個應用程序的性能可能會提高,也    可能不會提高)

應用泛型



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved