在這篇文章中,我們將會討論如何在c#中用示例實現泛型。在這篇文章 中,我們將會討論以下幾個觀點:
1、為什麼需要泛型?
2、泛型是什麼?
3、泛型的優勢或者說優點;
4、如何實現泛型?
5、如何使用泛型?
一、為什麼需要泛型?
我們用示例來說明一下為什麼需要泛型。我們建立乙個簡單的專案來檢查一下兩個整數是否相等。下面這段**很簡單易懂。在這裡,我們建立了兩個類:clscalculator 和clsmain,在clscxlculator類內,areequal()方法有兩個整型值做為輸入引數,並檢查輸入的兩個引數是否相等,如果兩者相等就返回true,否則就返回false。clsmain類中,呼叫了靜態方法areequal(),基於比較後的返回值進行輸出。
1上面的areequal()函式如期望一樣正常執行,更重要地,做為最初的需求,它只能使用兩個整型數值執行。假設我們的需求變化 了,現在我們需要比較兩個string元素是否相等。namespace
genericsdemo212
else
1316
17console.readkey();18}
19}2021
public
class
clscalculator
2227
}28 }
上述示例中,假如我們不是用整型數值進行比較,我們會得到乙個編譯錯誤。這是因為areequal()函式是繫結了整型型別的,因此,除了整型資料型別是不可能呼叫areequal函式的。所以,當我們試圖通過用下面所示的string資料型別呼叫areequal()函式時,我們會收到乙個編譯錯誤。
bool equal = clscalculator.areequal(「abc」, 「xyz」);
為了讓areequal()函式像接收整型那樣接收string型別,我們需要使用object資料型別做為引數。如果用object資料型別做為areequal函式的引數,那麼areequal函式就可以執行任何資料型別。
注:應該記住的最重要一點就是,所有.net資料型別,無論是基本型別(primitive type)還是引用型別,他們都直接或間接地繼承自system.object資料型別。
用object資料型別修改areequal()函式,如下所示:
理解C 泛型
在c 2.0中引入了泛型,泛型的出現解決了編碼中的很多問題。相信大家一定經常用到 system.collections.generic 命名空間中的泛型集合類 generic 就是泛型的意思 在c 1.0中,我們還在使用 system.collections 命名空間中的非泛型集合類,那麼看看我們在...
C 程式分析 泛型
using system using system.collections.generic using system.text using system.collections namespace test public int count public class prime class prog...
徹底理解C 泛型委託
不多說,先上 class program string addstring string s1,string s2 static void main string args intdel 100 200 mygenericdelegate string stringdel stringdel p.a...