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