C 泛型型別(十六)

2022-01-11 00:01:30 字數 1365 閱讀 1293

概述

泛型類和泛型方法兼具可重用性、型別安全性和效率,這是非泛型類和非泛型方法無法實現的

泛型通常與集合以及作用於集合的方法一起使用

泛型所屬命名空間: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:c

class 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就推出的乙個...