C#泛型的使用案例
作者:Darren 时间:2023-10-01 23:24:00
有这样一个有关汽车的类。
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
标签:C#,泛型
0
投稿
猜你喜欢
Java HashMap底层实现原理
2023-10-31 19:55:34
javaweb图书商城设计之用户模块(1)
2023-10-30 09:22:57
Java单例模式的8种写法(推荐)
2023-01-06 14:23:27
Android禁止横屏竖屏切换的有效方法
2023-05-05 10:56:16
Android App开发中HTTP扩展包OkHttp的入门使用指南
2023-10-01 11:11:28
Dwr3.0纯注解(纯Java Code配置)配置与应用浅析一之零配置文件化
2022-06-05 05:20:17
android实现注册登录程序
2021-06-28 00:38:44
Java回调方法详解
2022-09-25 08:33:54
Mybatis映射文件规则实例详解
2022-04-22 03:08:14
SpringCloud项目中Feign组件添加请求头所遇到的坑及解决
2023-04-28 03:46:58
Android编程实现下载时主界面与详细界面一致更新的方法
2023-01-02 10:07:35
IntelliJ IDEA2020.1版本更新pom文件自动导包的方法
2023-01-13 17:44:01
Android中简单的电话管理与短信管理App编写实例
2021-10-11 13:45:50
C#程序执行时间长查询速度慢解决方案
2023-10-31 08:49:05
java 字段值为null,不返回该字段的问题
2023-07-13 10:32:34
ListView通用泛型适配器
2022-06-30 11:52:04
基于WPF实现验证码控件
2021-08-15 21:44:36
Spring注解与P/C命名空间超详细解析
2022-08-04 19:42:34
C#清除字符串内空格的方法
2023-10-07 15:51:04
Android TV 3D卡片无限循环效果
2022-03-26 04:06:48