泛型方法
泛型不僅能作用在類上,也可單獨用在 類的方法上,他可根據方法參數的類型自動適應各種參數,這樣的方法叫泛型方 法。看下面的類:
public class Stack2
{
public void Push<T>(Stack<T> s, params T[] p)
{
foreach (T t in p)
{
s.Push(t);
}
}
}
原來的類Stack一次只能Push一個數據,這個類Stack2 擴展了Stack的功能(當然也可以直接寫在Stack中),他可以一次把多個數據壓 入Stack中。其中Push是一個泛型方法,這個方法的調用示例如下:
Stack<int> x = new Stack<int>(100);
Stack2 x2 = new Stack2();
x2.Push(x, 1, 2, 3, 4, 6);
string s = "";
for (int i = 0; i < 5; i++)
{
s += x.Pop().ToString();
} //至此,s的值為 64321
泛型中的靜態成員變量
在C#1.x中,我們知道類的 靜態成員變量在不同的類實例間是共享的,並且他是通過類名訪問的。C#2.0中 由於引進了泛型,導致靜態成員變量的機制出現了一些變化:靜態成員變量在相 同封閉類間共享,不同的封閉類間不共享。
這也非常容易理解,因為不 同的封閉類雖然有相同的類名稱,但由於分別傳入了不同的數據類型,他們是完 全不同的類,比如:
Stack<int> a = new Stack<int>();
Stack<int> b = new Stack<int> ();
Stack<long> c = new Stack<long>();
類實例a和b是同一類型,他們之間共享靜態成員變量,但類實例c卻是和a、b完 全不同的類型,所以不能和a、b共享靜態成員變量。