[C.C++] C#泛型的使用案例

3252 0
Honkers 2022-11-5 09:05:17 | 显示全部楼层 |阅读模式
有这样一个有关汽车的类。
  1.     public class Car
  2.     {
  3.         public int ID { get; set; }
  4.         public string Make { get; set; }
  5.     }
复制代码
现在,在客户端创建一个Car的集合实例,再遍历。
  1.         static void Main(string[] args)
  2.         {
  3.             var car1 = new Car() {ID = 1, Make = "Ford"};
  4.             var car2 = new Car() {ID = 2, Make = "Toyota"};
  5.             var cars = new List<Car>(){car1,car2};
  6.             foreach (var car in cars)
  7.             {
  8.                 Console.WriteLine(car.Make);
  9.             }
  10.             Console.Read();
  11.         }
复制代码
现在,要为Car增加发动机。
不同的车系车型可能用不同的发动机。这些发动机应该有一个基类吧。
  1.     public class MotorBase
  2.     {
  3.         public int HorsePower { get; set; }
  4.         public string Name { get; set; }
  5.     }
复制代码
比如,有2种型号的发动机,分别继承基类MotorBase。
  1.     public class V8 : MotorBase
  2.     {
  3.         public V8(string name)
  4.         {
  5.             HorsePower = 300;
  6.             Name = name;
  7.         }
  8.     }
  9.     public class V9 : MotorBase
  10.     {
  11.         public V9(string name)
  12.         {
  13.             HorsePower = 350;
  14.             Name = name;
  15.         }
  16.     }
复制代码
Car有可能用到V8发动机,也有可能V9发动机,这正是泛型登场的时候。
把Car修改成泛型类。
  1.     public class Car<T>
  2.     {
  3.         public int ID { get; set; }
  4.         public string Make { get; set; }
  5.         public T Motor { get; set; }
  6.     }
复制代码
这样,在创建Car<T>实例的时候,可以相对自如地选择V8或V9发动机。
  1.         static void Main(string[] args)
  2.         {
  3.             var v8Car1 = new Car<V8>() {ID = 1, Make = "Ford",Motor = new V8("v8发动机")};
  4.             var v8Car2 = new Car<V8>() { ID = 2, Make = "Toyota", Motor = new V8("v8发动机") };
  5.             var v8Cars = new List<Car<V8>>
  6.             {
  7.                 v8Car1, v8Car2
  8.             };
  9.             foreach (var car in v8Cars)
  10.             {
  11.                 Console.WriteLine("品牌:{0},发动机:{1}",car.Make, car.Motor.Name);
  12.             }
  13.             Console.Read();
  14.         }
复制代码
由此,当针对不同的类型有相同行为的时候,正是泛型登场的时候。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对中国红客联盟的支持。如果你想了解更多相关内容请查看下面相关链接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行