深入浅出.NET泛型编程教程.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅出.NET泛型编程教程

深入浅出.NET泛型编程 前言   .NET 2.0中泛型的出现是一个令人激动的特征。但是,什么是泛型?你需要它们吗?你会在自己的应用软件中使用它们?在本文中,我们将回答这些问题并细致地分析泛型的使用,能力及其局限性。   类型安全   .NET中的许多语言如 HYPERLINK /key/1664/1664.html \t _blank C#,C++和 HYPERLINK /key/1860/1860.html \t _blank VB.NET(选项strict为on)都是强类型语言。作为一个程序员,当你使用这些语言时,总会期望编译器进行类型安全的检查。例如,如果你把对一个Book类型的引用转换成一个Vehicle型的引用,编译器将告诉你这样的cast是无效的。   然而,当谈到.NET 1.0和1.1中的集合时,它们是无助于类型安全的。请考虑一个ArrayList的例子,它拥有一个对象集合--这允许你把任何类型的对象放于该ArrayList中。让我们看一下例1中的代码。   例1.缺乏类型安全的ArrayList using System; using System.Collections; namespace TestApp {  class Test  {   [STAThread]   static void Main(string[] args)   {    ArrayList list = new ArrayList();    list.Add(3);    list.Add(4);    //list.Add(5.0);    int total = 0;    foreach(int val in list)    {     total = total + val;    }    Console.WriteLine(Total is {0}, total);   }  } }   本例中,我们建立了一个ArrayList的实例,并把3和4添加给它。然后我 HYPERLINK /key/336/475336.html \t _blank 循环遍历该ArrayList,从中取出整型值然后把它们相加。这个程序将产生结果Total is 7。现在,如果我注释掉下面这句: list.Add(5.0);   程序将产生如下的运行时刻异常: Unhandled Exception: System.InvalidCastException: Specified cast is not valid. AtTestApp.Test.Main(String[]args)in :\workarea\testapp\class1.cs:line 17   哪里出错了呢?记住ArrayList拥有一个集合的对象。当你把3加到ArrayList上时,你已把值3装箱了。当你循环该列表时,你是把元素拆箱成int型。然而,当你添加值5.0时,你在装箱一个double型值。在第17行,那个double值被拆箱成一个int型。这就是失败的原因。   注意:上面的实例,如果是用VB.NET书写的话,是不会失败的。原因在于,VB.NET不使用装箱机制,它激活一个把该double转换成整型的方法。但是,如果ArrayList中的值是不能转换成整型的,VB.NET代码还会失败。   作为一个习惯于使用语言提供的类型安全的程序员,你希望这样的问题在编译期间浮出水面,而不是在运行时刻。这正是泛型产生的原因。   3. 什么是泛型?   泛型允许你在编译时间实现类型安全。它们允许你创建一个 HYPERLINK /key/837/837.html \t _blank 数据结构而不限于一特定的数据类型。然而,当使用该数据结构时,编译器保证它使用的类型与类型安全是相一致的。泛型提供了类型安全,但是没有造成任何性能损失和代码臃肿。在这方面,它们很类似于C++中的模板,不过它们在实现上是很不同的。   4. 使用泛型集合   .NET 2.0的System.Collections.Generics 命名空间包含了泛型集合定义。各种不同的集合/容器类都被参数化了。为使用它们,只需简单地指定参数化的类型即可。请看例2:   例2.类型安全的泛型列表 List<int> aList = new List<int>(); aList.Add(3); aList.Add(4); // aList.Add(5.0); int total = 0; foreach(int val in aList) {  total = total + val; } Console.WriteLine(Total is {0}, t

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档