.net中的泛型

來源:互聯網
上載者:User

標籤:style   c   class   blog   code   java   

泛型把類或方法的類型的確定延遲到執行個體化該類或方法的時候 ,也就是說剛開始聲明是不指定類型,等到要使用(執行個體化)時再指定類型

泛型可以用於  類、方法、委託、事件等

下面先寫一個簡單的泛型

public class GenericClass<T>{          void SomeMethod(  T   t  )          {                   //do something          }}

其使用方法如下:

執行個體化一個類

?
1 GenericClass<int> gci=new GenericClass<int>();

方法SomeMethod就具有整數類型的參數了

下面寫一個例子

using System;using System.Collections.Generic;using System.Text;namespace example{    class GenericClass<T>    {        public void PrintType(T t)        {            Console.WriteLine("Value:{0}    Type:{1}",t,t.GetType());        }    }    class Program    {        static void Main(string[] args)        {            int i = 0;            GenericClass<int> gci = new GenericClass<int>();            gci.PrintType(i);            string s = "hello";            GenericClass<string> gcs = new GenericClass<string>();            gcs.PrintType(s);            Console.ReadLine();        }    }}

泛型方法可以出現在泛型或非泛型型別上。需要注意的是,並不是只要方法屬於泛型型別,或者甚至是方法的形參的類型是封閉類型的泛型參數,就可以說方法是泛型方法。只有當方法具有它自己的型別參數列表時,才能稱其為泛型方法。在下面的代碼中,只有方法 G 是泛型方法。

?
1 2 3 4 5 6 7 8 class A {     T G<T>(T arg) {...} } class Generic<T> {     T M(T arg) {...} }

泛型的Where

  泛型的Where能夠對型別參數作出限定。有以下幾種方式。

  ·where T : struct 限制型別參數T必須繼承自System.ValueType。
 
  ·where T : class 限制型別參數T必須是參考型別,也就是不能繼承自System.ValueType。

  ·where T : new() 限制型別參數T必須有一個預設的建構函式

  ·where T : NameOfClass 限制型別參數T必須繼承自某個類或實現某個介面。

  以上這些限定可以組合使用,比如: public class Point where T : class, IComparable, new()

例如:

    class Person<T> where T:class    {     }    class Program    {        static void Main(string[] args)        {            Person<int> bb = new Person<int>(); //報錯,錯誤 1 類型“int”必須是參考型別才能用作泛型型別或方法“ConsoleApplication1.Person<T>”中的參數“T”         }    }

 

聯繫我們

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