最近頻繁的接觸到泛型方面的問題,所以也不得不來學習一下了,開始主要是在MSDN的WebCast上去下載教學錄象看的(李建忠老師的),本篇文章先介紹一下泛型入門方面的知識,希望能讓剛開始學習泛型的朋友能夠更快的入門,言歸正傳,首先我們來看一下泛型的基本概念。
最顯著的一點就是它參數化了類型,把類型作為參數抽象出來,從而使我們在實際的運用當中能夠更好的實現代碼的重復利用,同時它提供了更強的類型安全,更高的效率,不過在約束方面,它只支持顯示的約束,這樣在靈活性方面就顯得不是那麼好了。我覺得它之所以能夠提供更高的效率是因為泛型在實例化的時候采用了"on-demand"的模式,即按需實例化,發生在JIT(Just In Time)編譯時。
下面來看如何定義一個泛型類,很簡單,你只需要意識到一點,在這裡,類型已經被參數化了:
using System;
using System.Collections.Generic;
using System.Text;
namespace GenericTest
{
class Program
{
static void Main(string[] args)
{
//使用string,int來實例化Test<T,S>類
Test<string, int> t = new Test<string, int>("SHY520",22);
//調用泛型類中的方法
t.SetValue();
}
}
/**//// <summary>
/// 定義一個泛型類,該類有兩個類型參數,分別是T,S
/// http://pw.cnblogs.com
/// </summary>
/// <typeparam name="T">類型參數</typeparam>
/// <typeparam name="S">類型參數</typeparam>
public class Test<T,S>
{
//泛型類的類型參數可用於類成員
private T name;
private S age;
public Test(T Name,S Age)
{
this.name = Name;
this.age = Age;
}
public void SetValue()
{
Console.WriteLine(name.ToString());
Console.WriteLine(age.ToString());
}
}
}