.NET泛型编程简介

原创 2003年10月12日 23:51:00

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

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

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

 

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

1、  更加安全

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

2、  效率更高

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

 

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

 

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

 

Introducing Generics in the CLR

More on Generics in the CLR

.net 泛型 泛型编程之泛型类、泛型方法、泛型约束

泛型方法     在C#2.0中,方法可以定义特定于其执行范围的泛型参数,如下所示:     public class MyClassT>     {         //指定My...
  • zzy7075
  • zzy7075
  • 2016年01月06日 10:14
  • 568

Spring.Net 泛型对象注入

[C#代码] [Ioc容器配置] 重点:1. type需要明确注入的类型,而不是仅仅一个占位符(spring必须知道需要注入的是个什么东西)     2....
  • colin788
  • colin788
  • 2015年04月02日 08:25
  • 437

《泛型编程与STL》读书笔记

本书从概念和设计上讲述了泛型编程。个人认为只需要阅读前面九章即可(实际上我只读了前面七章),后面章节是一些算法和API的讲述,可以在用到的时候再来查阅。 全书N次提到concept,model以及re...
  • mr_cai2009
  • mr_cai2009
  • 2015年01月05日 17:01
  • 1185

[C++]模板与泛型编程

模板与泛型编程 本文尝试着介绍对泛型编程的理解,从而扩展我们的template编程。泛型编程是C++中非常重要的一部分,它使得我们节省了很多编写不同代码的体力。 1. 了解隐式接口和编译器多态与O...
  • stary_yan
  • stary_yan
  • 2016年05月04日 11:56
  • 1113

如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法??

如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法?
  • phker
  • phker
  • 2016年06月21日 08:37
  • 1120

泛型Where几种情况

泛型的Where   泛型的Where能够对类型参数作出限定。有以下几种方式。   l         where T : struct   限制类型参数T必须继承自System.Valu...
  • zjlovety
  • zjlovety
  • 2013年06月07日 09:14
  • 2998

夯实JAVA基本之一——泛型详解(2):高级进阶

前言:被温水煮惯了,梦想的东西总是不敢于尝试,失败了又怎样,最多从头来过。上一篇给大家初步讲解了泛型变量的各种应用环境,这篇将更深入的讲解一下有关类型绑定,通配符方面的知识。一、类型绑定1、引入我们重...
  • harvic880925
  • harvic880925
  • 2015年11月17日 10:24
  • 9024

“懒人”的福音---泛型编程

懒得一步一步走楼梯,于是有了电梯;懒得走路,于是他们制造出了汽车、火车、飞机;懒得去计算,于是发现了计算器;懒得重复写代码,于是有了C++之中的泛型编程!        当然,上面那段话是我瞎掰的,真...
  • Loving_Forever_
  • Loving_Forever_
  • 2016年06月28日 22:37
  • 2435

C++泛型编程思想方法总结

C++泛型编程思想方法总结 2015-08-15 15:39 1126人阅读 评论(0) 收藏 举报  分类: 重构/设计模式/架构(34)  CC++Design(40)  版权声...
  • lltaoyy
  • lltaoyy
  • 2017年02月16日 17:22
  • 522

泛型集合代替DataTable

在机房重构过程中,在实现将数据库中数据显示到DataGridView控件这一功能时,遇到这样一个问题:由于在SqlHelper类中,定义查询操作时是将数据库,得到的是DataTable和DataSet...
  • u013035924
  • u013035924
  • 2015年03月05日 16:49
  • 1097
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET泛型编程简介
举报原因:
原因补充:

(最多只允许输入30个字)