C#2.0 泛型

來源:互聯網
上載者:User

標籤:ons   c#   line   引用   []   類型   lin   ati   adk   

1.泛型類

定義:

class Test<T> 註:T是預留位置可以隨便寫
{
      public T data; 註:定義一個T類型的欄位
      public Test(T obj) 註:定義一個T類型的方法
      {
             this.data = obj;
      }
}

執行個體化泛型類

private static void Main(string[] args)
{
Test<int> test = new Test<int>(3); 
Console.WriteLine(test.data);

Console.ReadKey();
}

2.泛型方法

定義:

public static void Swap<T>(ref T a, ref T b)  值:定義一個泛型方法,ref 是指引用傳回值是否作為調用方欲修改的引用被儲存在本地
{
      a = b;
}

private static void Main(string[] args)

{

int a = 1;
int b = 2;
Swap<int>(ref a, ref b); 註:傳遞int類型的兩個值
Console.Write(a);

Console.ReadKey();
}

 3.泛型約束

public static void Swap<T>(ref T a, ref T b)  where T:struct 註:傳遞類型必須是實值型別
{
      a = b;
}

public static void Swap<T>(ref T a, ref T b)  where T:class註:傳遞類型必須是參考型別
{
      a = b;
}

public static void Swap<T>(ref T a, ref T b)  where T:new()註:傳遞型別參數必須具有無參數的公用建構函式。當與其他約束一起使用時,new() 約束必須最後指定。
{
      a = b;
}

public static void Swap<T>(ref T a, ref T b)  where T:<基類名>註:傳遞型別參數必須是指定的基類或派生自指定的基類。
{
      a = b;
}

public static void Swap<T>(ref T a, ref T b)  where T:<介面名稱>註:傳遞型別參數必須是指定的介面或實現指定的介面。可以指定多個介面約束。約束介面也可以是泛型的。
{
      a = b;
}

public static void Swap<T>(ref T a, ref T b)  where T:U  註:為 T 提供的型別參數必須是為 U 提供的參數或派生自為 U 提供的參數。這稱為裸類型約束。
{
      a = b;
}

C#2.0 泛型

相關文章

聯繫我們

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