APP下载

.NET泛型技术的研究与分析*

2012-04-12李凯凯闵联营

武汉理工大学学报(交通科学与工程版) 2012年4期
关键词:定义

李凯凯 闵联营

(武汉理工大学计算机科学与技术学院 武汉 430063)

在CLR(common language runtime)1.0中,当要创建一个灵活的类或方法,但该类或方法在编译期间不知道使用什么类,就必须以System.Object类为基础进行处理,而Object类在编译期间没有类型安全性,又必须进行强制类型转换.另外,给值类型使用Object类会有性能损失,这给程序开发带来诸多不便.

故在CLR 2.0(.NET 3.5基于 CLR 2.0)中,提供了泛型,这是一个很强大的新特性.有了泛型,就不再需要Object类来参与实现一些通用类或方法了.通过使用泛型类型,可以根据需要,用特定的类型替换泛型类型,同时保证了类型安全性:如果某个类型不支持泛型类,编译器就会报错,以阻止程度发生运行期错误.正确使用泛型将大大提高代码的灵活性,结合一个优秀的设计模式[1],可以显著缩短开发时间.

1 泛型的优势

1.1 安 全

C#是一个类型安全的语言[2],类型安全允许编译器(可信赖的)捕获潜在的错误,而不是在程序运行时才发现(不可信赖的).在CLR 1.0中,当使用集合时,这种类型安全就失效了:由.NET类库提供的集合类全是存储基类型(Object)的,而.NET中所有的一切都继承于Object,因此所有类型都可以放到一个集合中,这相当于根本就没有了类型检测.

下面的代码也正好说明了这个问题.

ArrayList list=new ArrayList();

list.Add(100);list.Add(“test”);list.Add(new object());

foreach(int i in list)// 引发运行期错误

Console.Write(i);

可以往ArrayList里添加任何类型,也能通过编译,但是在接下来的使用中,由于字符串“test”和Object对象都不能转换为值类型int,这会抛出运行期错误,类型不再安全.

1.2 性 能

泛型的一个主要优点是性能.如果对值……

登录APP查看全文

猜你喜欢

定义
活用定义巧解统计概率解答题
例谈椭圆的定义及其应用
题在书外 根在书中——圆锥曲线第三定义在教材和高考中的渗透
永远不要用“起点”定义自己
严昊:不定义终点 一直在路上
定义“风格”
成功的定义
有壹手——重新定义快修连锁
修辞学的重大定义
山的定义