C# 泛型

2018-07-01 18:20 更新

C#泛型

泛型類型定義包含占位符類型的模板。

泛型可以提高類型安全性,減少鑄件和拳擊。

泛型類型聲明可以由泛型類型的消費(fèi)者填充的類型參數(shù)。

這里是一個(gè)泛型類型Stack <T>,用于堆棧類型T的實(shí)例。

Stack<T>聲明單個(gè)類型參數(shù)T:

public class Stack<T> { 
    int position; 
    T[] data = new T[100]; 
    public void Push (T obj) { 
       data[position++] = obj; 
    } 
    public T Pop() { 
       return data[--position]; 
    } 
} 

我們可以使用Stack <T>如下:

Stack<int> stack = new Stack<int>(); 
stack.Push(5); 
stack.Push(10); 
int x = stack.Pop(); // x is 10 
int y = stack.Pop(); // y is 5 

Stack< int> 用類型參數(shù)int填充類型參數(shù)T.

Stack<> 是一個(gè)開放類型,而Stack <int>是一個(gè)閉合類型。


泛型方法

泛型方法在方法的簽名中聲明類型參數(shù)。

使用泛型方法,許多基本算法只能以通用方式實(shí)現(xiàn)。

這里是一個(gè)泛型的方法交換任何類型T的兩個(gè)變量的內(nèi)容:

static void Swap<T> (ref T a, ref T b) {
    T temp = a;
    a = b; 
    b = temp; 
} 

Swap<T>可以使用如下:

int x = 5; 
int y = 10; 
Swap (ref x, ref y); 

沒有必要為通用方法提供類型參數(shù)。

如果存在歧義,可以使用類型參數(shù)調(diào)用泛型方法,如下所示:

Swap<int> (ref x, ref y); 

只有方法和類型可以引入類型參數(shù)。

屬性,索引器,事件,字段,構(gòu)造函數(shù),運(yùn)算符等不能聲明類型參數(shù)。

以下代碼顯示了如何編寫返回通用項(xiàng)的索引器:

public T this [int index] { 
   get { 
      return data [index]; 
   } 
} 

構(gòu)造函數(shù)可以接受現(xiàn)有的類型參數(shù),但不能引入它們。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)