有这样一个有关汽车的类。 - 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();
- }
复制代码由此,当针对不同的类型有相同行为的时候,正是泛型登场的时候。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对中国红客联盟的支持。如果你想了解更多相关内容请查看下面相关链接 |