博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个例子来看C#泛型是如何登场的
阅读量:6376 次
发布时间:2019-06-23

本文共 1347 字,大约阅读时间需要 4 分钟。

 

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

 

 
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
(){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
{
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
() {ID = 1, Make = "Ford",Motor = new V8("v8发动机")};
var v8Car2 = new Car
() { ID = 2, Make = "Toyota", Motor = new V8("v8发动机") };
 
var v8Cars = new List
>
{
v8Car1, v8Car2
};
 
 
foreach (var car in v8Cars)
{
Console.WriteLine("品牌:{0},发动机:{1}",car.Make, car.Motor.Name);
}
 
Console.Read();
 
}
 

 

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

转载地址:http://cxtqa.baihongyu.com/

你可能感兴趣的文章
PAT A1010 二分进制结合重点题
查看>>
LeetCode35.搜索插入位置 JavaScript
查看>>
5个让人赞不绝口的微信小程序,拒绝占用手机内存!
查看>>
Spring Security整合KeyCloak保护Rest API
查看>>
POS概述
查看>>
containerd发布了CRI修复程序和CVE-2019-5736更新的runc
查看>>
77. Combinations
查看>>
WEB前端开发的思考与感悟
查看>>
实现了所有主流APP的分类切换效果,可快速接入,灵活扩展(swift)
查看>>
微信自动跳转浏览器打开APP(APK)下载链接
查看>>
==与===的区别
查看>>
机器学习实验笔记
查看>>
不同工具查看代码分支diff的差异
查看>>
一文 | 跨域及其解决方案
查看>>
白话Java I/O模型
查看>>
[TsAdmin]--一款基于Vue.js+Element UI的单页无刷新(无iframe)多选项卡的后台管理系统模板...
查看>>
排列组合技术
查看>>
哈工大发明“电子体毛”,让机器人学会“敏感”
查看>>
上传一张照片,让算法告诉你是否患有抑郁症
查看>>
VR厂商唯晶科技获2800万C+轮融资,曾开发过游戏《圣女之歌》
查看>>