概述
泛型類和泛型方法兼具可重用性、型別安全性和效率,這是非泛型類和非泛型方法無法實現的
泛型通常與集合以及作用於集合的方法一起使用
泛型所屬命名空間:system.collections.generic
可以建立自定義泛型介面、泛型類、泛型方法、泛型事件和泛型委託,以提供自己的通用解決方案,設計型別安全的高效模式
泛型允許編寫乙個可以與任何資料型別一起工作的類或方法
示例
1結果 約束using
system;
2using
system.collections.generic;34
namespace
generictest514
public t getitem(int
index)
1518
public
void setitem(int
index, t value)
1922}23
24class
tester
2533
34for (int i=0; i<5; i++)
3538
console.writeline();
39console.readkey();40}
4142
}43 }
對**能夠在例項化類時用於型別引數的型別種類施加限制
約束的方式是指定t的祖先,即繼承的介面或類
**嘗試使用某個約束所不允許的型別來例項化類,則會產生編譯時錯誤
定義:public t getinfo(string id) where t : cbaseinfo
約束限定條件
例:
public class myarray: bwhere t : new()定義多個型別引數和約束:
public泛型也可以繼承泛型:class basewhere a: struct
where b: new
()where c: class
class d:cclass e:cclass f:c
C 泛型型別 泛型方法
泛型會宣告型別引數 泛型的消費者需要提供型別引數來把佔位符型別填充 public class stack var stack newstack int stack.push 2 stack.push 3 int x stack.pop 2int y stack.pop 3stack open typ...
c 判斷 泛型t 型別 C 泛型方法的型別推斷
這裡所謂的 泛型方法的型別推斷 指的是根據已有的方法實參的型別,推斷出泛型方法的型別實參。例如乙個泛型方法 void method t args 如果我給出方法實參型別是 int,那麼希望能夠推斷出 t int。或者舉個複雜點的例子,對於下面的泛型方法定義 void method ilist a,p...
c 判斷 泛型t 型別 C 基礎篇 泛型
在開發程式設計中,我們經常會遇到功能非常相似的功能模組,只是他們的處理的資料不一樣,所以我們會分別採用多個方法來處理不同的資料型別。但是這個時候,我們就會想乙個問題,有沒有辦法實現利用同乙個方法來傳遞不同種型別的引數呢?這個時候,泛型也就因運而生,專門來解決這個問題的。泛型是在c 2.0就推出的乙個...