- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】C#中的泛型 - Jimmy Zhang - 博客园
C#中的泛型
1.1 C#中的泛型
.Net 1.1 版本最受诟病的一个缺陷就是没有提供对泛型的支持。通过使用泛型,我们可以极大地提
高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱、拆箱,在一定程度上提升了
应用程序的性能。本文将系统地为大家讨论泛型,我们先从理解泛型开始。
1.1 理解泛型
1.1.1 为什么要有泛型?
我想不论大家通过什么方式进入了计算机程序设计这个行业,都免不了要面对数据结构和算法这个
话题。因为它是计算机科学的一门基础学科,往往越是底层的部分,对于数据结构或者算法的时间
效率和空间效率的要求就越高。比如说,当你在一个集合类型(例如ArrayList)的实例上调用
Sort()方法对它进行排序时,.Net 框架在底层就应用了快速排序算法。.Net 框架中快速排序方法名
称叫QuickSort(),它位于Array 类型中,这可以通过Reflector.exe 工具查看到。
我们现在并不是要讨论这个QuickSort()实现的好不好,效率高还是不高,这偏离了我们的主题。
但是我想请大家思考一个问题:如果由你来实现 一个排序算法,你会怎么做?好吧,我们把题目限
定得再窄一些,我们来实现一个最简单的冒泡排序(Bubble Sort)算法,如果你没有使用泛型的经
验,我猜测你可能会毫不犹豫地写出下面的代码来,因为这是大学教程的标准实现:
public class SortHelper{
public void BubbleSort(int[] array) {
int length = array.Length;
for (int i = 0; i = length - 2; i++) {
for (int j = length - 1; j = 1; j--) {
// 对两个元素进行交换
if (array[j] array[j - 1] ) {
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}
}
对冒泡排序不熟悉的读者,可以放心地忽略上面代码的方法体,它不会对你理解泛型造成丝毫的障
碍,你只要知道它所实现的功能就可以了:将一个数组的元素按照从小到大的顺序重新排列。我们
对这个程序进行一个小小的测试:
class Program {
static void Main(string[] args) {
SortHelper sorter = new SortHelper();
int[] array = { 8, 1, 4, 7, 3 };
sorter.BubbleSort(array);
foreach(int i in array){
Console.Write({0} , i);
}
Console.WriteLine();
Console.ReadKey();
}
}
输出为:
1 3 4 7 8
我们发现它工作良好,欣喜地认为这便是最好的解决方案了。直到不久之后,我们需要对一个byte
类型的数组进行排序,而我们上面的排序算法只能接受 一个int 类型的数组,尽管我们知道它们是
完全兼容的,因为byte 类型是int 类型的一个子集,但C#是一个强类型的语言,我们无法在一个
接受int 数 组类型的地方传入一个byte 数组。好吧,没有关系,现在看来唯一的办法就是将代码
复制一遍,然后将方法的签名改一个改了:
public class SortHelper {
public void BubbleSort(int[] array) {
您可能关注的文档
- 【精选】ASIC_Design_Flow.ppt
- 【精选】ASTD培训工作者的胜任力模型.doc
- 【精选】AS BJ 2014_重构再重构,当当网架构演进及规划实现V2.5.pdf
- 【精选】ASTME1077-01 ,钢的脱碳层测定方法.pdf.pdf
- 【精选】AST_中央企业班组长岗位管理能力资格认证(三期模拟1030)-0015.doc
- 【精选】AST_中央企业班组长岗位管理能力资格认证(六期)在线测试-0014.pdf
- 【精选】AST_中央企业班组长岗位管理能力资格认证(六期)在线测试-0006.pdf
- 【精选】AST_中央企业班组长岗位管理能力资格认证(六期)在线测试-0017.pdf
- 【精选】AST_中央企业班组长岗位管理能力资格认证(六期)在线测试(全20套).pdf
- 【精选】ATM协议模型(异步传输模式).pdf
- 新型材料建筑垃圾综合利用项目可行性研究报告写作模板-申批备案.doc
- 年产各类纺织面料1900万米建设项目可行性研究报告写作模板-申批备案.doc
- 智能餐饮设备生产项目可行性研究报告写作模板-申批备案.doc
- 生物医药产业园建设项目可行性研究报告模板-立项备案.doc
- 燃气管道等老化更新改造基础设施项目可行性研究报告模板-备案拿地.doc
- 发动机涡轮盘真空粉末锻造生产线升级改造项目可行性研究报告模板-备案拿地.doc
- 香菇产业智慧农业光伏大棚项目可行性研究报告写作模板-拿地备案.doc
- 涡轮增压器涡壳铸造及汽车零部件项目可行性研究报告写作模板-申批立项.doc
- 雨污水地下管网更新改造项目可行性研究报告模板-立项拿地.doc
- 农产品冷链仓储公共冷库项目可行性研究报告写作模板-申批备案.doc
文档评论(0)