11.泛型篇

來源:互聯網
上載者:User

標籤:style   ar   io   使用   sp   strong   on   資料   div   

1.意義

泛型(generic)是C#語言2.0和通用語言運行時(CLR)的一個新特性。泛型為.NET架構引入了型別參數(type parameters)的概念。型別參數使得設計類和方法時,不必確定一個或多個具體參數,其的具體參數可延遲到客戶代碼中聲明、實現。這意味著使用泛型的型別參數T,寫一個類MyList<T>,客戶代碼可以這樣調用:MyList<int>, MyList<string>或 MyList<MyClass>。這避免了運行時類型轉換或裝箱操作的代價和風險。C# 泛型是開發工具庫中的一個無價之寶。它們可以提高效能、型別安全和品質,減少重複性的編程任務,簡化總體編程模型,而這一切都是通過優雅的、可讀性強的文法完成的。儘管 C# 泛型的根基是 C++ 範本,但 C# 通過提供編譯時間安全和支援將泛型提高到了一個新水平。C# 利用了兩階段編譯、中繼資料以及諸如約束和一般方法之類的創新性的概念。毫無疑問,C# 的將來版本將繼續發展泛型,以便添加新的功能,並且將泛型擴充到諸如資料訪問或本地化之類的其他 .NET Framework 領域 2.泛型約束    下表列出了五類約束:
約束 描述
where T: struct 型別參數必須為實值型別。
where T : class 型別參數必須為類型。
where T : new() 型別參數必須有一個公有、無參的建構函式。當於其它約束聯合使用時,new()約束必須放在最後。
where T : <base class name> 型別參數必須是指定的基底類型或是派生自指定的基底類型。
where T : <interface name> 型別參數必須是指定的介面或是指定介面的實現。可以指定多個介面約束。介面約束也可以是泛型的。
 型別參數的約束,增加了可調用的操作和方法的數量。這些操作和方法受約束類型及其派生層次中的類型的支援。因此,設計泛型類或方法時,如果對泛型成員執行任何賦值以外的操作,或者是調用System.Object中所沒有的方法,就需要在型別參數上使用約束。3.泛型類泛型類封裝了不針對任何特定資料類型的操作。泛型類常用於容器類,如鏈表、雜湊表、棧、隊列、樹等等。這些類中的操作,如對容器添加、刪除元素,不論所儲存的資料是何種類型,都執行幾乎同樣的操作。 對大多數情況,推薦使用.NET架構2.0類庫中所提供的容器類。有關使用這些類的詳細資料,請參見基礎類庫中的泛型。 通常,從一個已有的具體類來建立泛型類,並每次把一個類型改為型別參數,直至達到一般性和可用性的最佳平衡。當建立你自己的泛型類時,需要重點考慮的事項有:       哪些類型應泛化為型別參數。一般的規律是,用參數表示的類型越多,代碼的靈活性和複用性也就越大。過多的泛化會導致代碼難以被其它的開發人員理解。       如果有約束,那麼型別參數需要什麼樣約束。一個良好的習慣是,儘可能使用最大的約束,同時保證可以處理所有需要處理的類型。例如,如果你知道你的泛型類只打算使用參考型別,那麼就應用這個類的約束。這樣可以防止無意中使用實值型別,同時可以對T使用as運算子,並且檢查Null 參考。       把泛型行為放在基類中還是子類中。泛型類可以做基類。同樣非泛型類的設計中也應考慮這一點。泛型基類的繼承規則     。       是否實現一個或多個泛型介面。例如,要設計一個在基於泛型的容器中建立元素的類,可能需要實作類別似IComparable<T>的介面,其中T是該類的參數。4.內容用得比較多的就是dictionary與list ...

11.泛型篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.