软件编程
位置:首页>> 软件编程>> C#编程>> C#泛型的使用案例

C#泛型的使用案例

作者:Darren  发布时间:2023-10-01 23:24:00 

标签:C#,泛型

有这样一个有关汽车的类。

public class Car
   {
       public int ID { get; set; }
       public string Make { get; set; }
   }

现在,在客户端创建一个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();
       }

现在,要为Car增加发动机。

不同的车系车型可能用不同的发动机。这些发动机应该有一个基类吧。

public class MotorBase
   {
       public int HorsePower { get; set; }
       public string Name { get; set; }
   }

比如,有2种型号的发动机,分别继承基类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发动机,也有可能V9发动机,这正是泛型登场的时候。

把Car修改成泛型类。

public class Car<T>
   {
       public int ID { get; set; }
       public string Make { get; set; }
       public T Motor { get; set; }
   }

这样,在创建Car<T>实例的时候,可以相对自如地选择V8或V9发动机。

static void Main(string[] args)
       {
           var v8Car1 = new Car<V8>() {ID = 1, Make = "Ford",Motor = new V8("v8发动机")};
           var v8Car2 = new Car<V8>() { ID = 2, Make = "Toyota", Motor = new V8("v8发动机") };
           var v8Cars = new List<Car<V8>>
           {
               v8Car1, v8Car2
           };
           foreach (var car in v8Cars)
           {
               Console.WriteLine("品牌:{0},发动机:{1}",car.Make, car.Motor.Name);
           }
           Console.Read();
       }

由此,当针对不同的类型有相同行为的时候,正是泛型登场的时候。

来源:https://www.cnblogs.com/darrenji/p/4517340.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com