C#知識 泛型

來源:互聯網
上載者:User

標籤:style   使用   io   ar   資料   div   問題   cti   代碼   

C#知識 泛型        泛型是 2.0 版 C# 語言和公用語言運行庫 (CLR) 中的一個新功能。泛型將型別參數的概念引入 .NET Framework,型別參數使得設計如下類和方法成為可能:這些類和方法將一個或多個類型的指定延遲到用戶端代碼聲明並執行個體化該類或方法的時候。例如,通過使用泛型型別參數 T,您可以編寫其他用戶端代碼能夠使用的單個類,而不致引入運行時強制轉換或裝箱操作的成本或風險,避免進行強制類型轉換的需求提高型別安全。
泛型概述及優點        泛型類和泛型方法同時具備可重用性、型別安全和效率高等特點。它通常用在集合和在集合上啟動並執行方法中。.NET 2.0版類庫提供了一個新的名為System.Collections.Generic的命名空間,其中包含幾個新的基於泛型的集合類。        也可以建立自訂泛型型別和方法。        泛型類和方法接收”型別參數“,指定了要操作的對象的類型:
public class Test<T> {}
        在執行個體化時才指定類型。
Test<int> tree = new Test<int>(); 
        使用泛型型別有以下優點:
  1. 使用泛型型別可以最大限度地重用代碼、保護類型的安全以及提高效能。
  2. 泛型最常見的用途是建立集合類。
  3. .NET Framework 類庫在 System.Collections.Generic 命名空間中包含幾個新的泛型集合類。應儘可能地使用這些類來代替普通的類,如 System.Collections 命名空間中的 ArrayList。
  4. 您可以建立自己的泛型介面、泛型類、泛型方法、泛型事件和泛型委派。
  5. 可以對泛型類進行約束以訪問特定資料類型的方法。
  6. 關於泛型資料類型中使用的類型的資訊可在運行時通過反射擷取。
泛型中的型別參數T        型別參數T用來定義泛型類時的預留位置,並不是一種類型,僅代表某種可能的類型。在定義時,T出現的位置可以在使用是用任何類型來代替。
決定在何時何地使用泛型        您需要考慮以下幾件事件: 
  • 您所使用的類型是否包含或操作未指定的資料類型(如集合類型)?如果是這樣,建立泛型型別將能提供更多的好處。如果您的類型只操作單一的指定類型,那麼就沒有必要去建立一個泛型類。 
  • 如果您的類型將操作值類型,那麼就會產生裝箱和拆箱操作,就應該考慮使用泛型來防止裝箱和拆箱操作。 
  • 泛型的強型別檢查有助於快速尋找錯誤(也就是編譯期而非運行期),從而縮短bug修複周期。
  • 在編寫多個類操作多個資料類型時是否遭遇到“代碼膨脹”問題(如一個ArrayList只儲存StreamReaders而另一個儲存StreamWriters)?其實編寫一次代碼並讓它工作於多個資料類型非常簡單。
  • 泛型使得代碼更為清晰。通過消除代碼膨脹並進行強制檢查,您的代碼將變得更易於閱讀和理解。

















C#知識 泛型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.