C# 中的泛型總結

來源:互聯網
上載者:User

.NET中的泛型功能相當強大,它對實作類別型安全和代碼重用都有很大的作用。現在將泛型的知識整理如下:

1、概念:泛型是將類型作為參數傳遞給類、方法、委託;

2、泛型的類型約束:是對參數類型進行約束限制,在需要使用參數類型的特定功能時,約束是必須的。如在泛型類中,需要使用參數類的一個方法時,則必須指定這個參數類是實現了一個特定的介面或源自具體的基類。約束的文法為:public class Master<T> where T : Employee{}
在應用 where T : class 約束時,避免對型別參數使用 ==!= 運算子,因為這些運算子僅測試引用同一性而不測試值相等性。即使在用作參數的類型中重載這些運算子也是如此。下面的代碼說明了這一點;即使 String 類重載 == 運算子,輸出也為 false。

public static void OpTest<T>(T s, T t) where T : class
{
    System.Console.WriteLine(s == t);
}
static void Main()
{
    string s1 = "foo";
    System.Text.StringBuilder sb = new System.Text.StringBuilder("foo");
    string s2 = sb.ToString();
    OpTest<string>(s1, s2);
}
3、泛型類的繼承:原則:要求子類對應於父類的泛型參數更具體(個人理解),如父類型泛型參數,而子類沒有(需要顯示指定)、父類對泛型參數有約束而子類沒有、父類的泛型參數比子類多,這些都是錯誤的,這時,子類可以從封閉式(將泛型參數指定為一個具體的類型)基類繼承、

聯繫我們

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