C#泛型的使用案例
有這樣一個(gè)有關(guān)汽車的類。
public class Car { public int ID { get; set; } public string Make { get; set; } }
現(xiàn)在,在客戶端創(chuàng)建一個(gè)Car的集合實(shí)例,再遍歷。
static void Main(string[] args) { var car1 = new Car() {ID = 1, Make = "Ford"}; var car2 = new Car() {ID = 2, Make = "Toyota"}; var cars = new List<Car>(){car1,car2}; foreach (var car in cars) { Console.WriteLine(car.Make); } Console.Read(); }
現(xiàn)在,要為Car增加發(fā)動(dòng)機(jī)。
不同的車系車型可能用不同的發(fā)動(dòng)機(jī)。這些發(fā)動(dòng)機(jī)應(yīng)該有一個(gè)基類吧。
public class MotorBase { public int HorsePower { get; set; } public string Name { get; set; } }
比如,有2種型號(hào)的發(fā)動(dòng)機(jī),分別繼承基類MotorBase。
public class V8 : MotorBase { public V8(string name) { HorsePower = 300; Name = name; } } public class V9 : MotorBase { public V9(string name) { HorsePower = 350; Name = name; } }
Car有可能用到V8發(fā)動(dòng)機(jī),也有可能V9發(fā)動(dòng)機(jī),這正是泛型登場的時(shí)候。
把Car修改成泛型類。
public class Car<T> { public int ID { get; set; } public string Make { get; set; } public T Motor { get; set; } }
這樣,在創(chuàng)建Car<T>實(shí)例的時(shí)候,可以相對(duì)自如地選擇V8或V9發(fā)動(dòng)機(jī)。
static void Main(string[] args) { var v8Car1 = new Car<V8>() {ID = 1, Make = "Ford",Motor = new V8("v8發(fā)動(dòng)機(jī)")}; var v8Car2 = new Car<V8>() { ID = 2, Make = "Toyota", Motor = new V8("v8發(fā)動(dòng)機(jī)") }; var v8Cars = new List<Car<V8>> { v8Car1, v8Car2 }; foreach (var car in v8Cars) { Console.WriteLine("品牌:{0},發(fā)動(dòng)機(jī):{1}",car.Make, car.Motor.Name); } Console.Read(); }
由此,當(dāng)針對(duì)不同的類型有相同行為的時(shí)候,正是泛型登場的時(shí)候。
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
C# WinForm自動(dòng)更新程序之文件上傳操作詳解
這篇文章主要為大家詳細(xì)介紹了C# WinForm自動(dòng)更新程序中文件上傳操作,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2022-10-10WPF實(shí)現(xiàn)背景燈光隨鼠標(biāo)閃動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)背景燈光隨鼠標(biāo)閃動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08C# Winform 實(shí)現(xiàn)屏蔽鍵盤的win和alt+F4的實(shí)現(xiàn)代碼
最近在做一個(gè)惡搞程序,就是打開后,程序獲得桌面的截圖然后,然后全屏顯示在屏幕上,用戶此時(shí)則不能進(jìn)行任何操作。2009-02-02c# 實(shí)現(xiàn)網(wǎng)頁加載后將頁面截取為長圖片
這篇文章主要介紹了c# 實(shí)現(xiàn)網(wǎng)頁加載后將頁面截取為長圖片的方法,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下2021-01-01C#通過HttpWebRequest發(fā)送帶有JSON Body的POST請(qǐng)求實(shí)現(xiàn)
本文主要介紹了C#通過HttpWebRequest發(fā)送帶有JSON Body的POST請(qǐng)求實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn)
本文主要介紹了C# TabControl手動(dòng)觸發(fā)DrawItem的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02