菜头粿

查看: 301|回复: 0
打印 上一主题 下一主题

.NET范型编程简介

[复制链接]
1#
跳转到指定楼层
发表于 2009-8-29 12:11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



  
   
.NET范型编程简介
.NET范型编程简介 sam1111(原作)

.NET范型编程已经离我们不远了,在微软最近随SQL Server Yukon Beta1发行的.NET Framework 1.2中就已经有了范型的影子。虽然现在它还是问题多多,但是相信随着新版.NET Framework的正式发行(正式发行时的版本号会是2.0),这些问题会得到解决。因此我们也该为.NET范型编程做些准备了。

.NET系统是一个单根继承系统,所有的类型都派生自Object。我以前一直认为在单根继承系统中用不着范型。既然所有的东西都可以作为Object传递,又何必使用范型呢?只是增加复杂度而已,除了看起来高深一点,似乎没有别的什么好处了。但是,当两个最著名的单根系统,Java和.NET,都势不可挡地要加入范型编程时,我不免要重新审视这个问题——为什么一定要范型编程?

归纳起来,范型比非范型具有下面两个优点:

1、 更加安全

在非范型编程中,虽然所有的东西都可以作为Object传递,但是在传递的过程中免不了要进行类型转换。而类型转换在运行时是不安全的。使用范型编程将可以减少不必要的类型转换,从而提高安全性。

2、 效率更高

在非范型编程中,将简单类型作为Object传递时会引起Boxing和Unboxing操作,这两个过程都是具有很大开销的。使用范型编程就不必进行Boxing和Unboxing操作了。

.NET范型具有很好的二进制重用性。这一点得益于.NET将范型内建在CLR之中。C++范型和评估中Java范型所依靠的是它们各自的编译器所提供的特性,编译器在编译范型代码时将确切的类型展开,这就难免会出现代码膨胀的问题。而.NET的范型代码是在运行时由JIT即时编译的,这样CLR就可以为不同类型重用大部分的即时编译代码了。

下面两篇文章详细地介绍了.NET中的范型编程:

Introducing Generics in the CLR
More on Generics in the CLR


高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|Archiver| 菜头粿 声明:本站所发贴子内容仅代表网友观点,不代表本站立场,严禁一切与国家法律相抵触的内容。感谢关注!
粤icp备19073828

GMT+8, 2026-7-27 02:21 , Processed in 0.112434 second(s), 15 queries .

粤东.中国

© 2007-2026 czczcz.com

快速回复 返回顶部 返回列表