电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

深入浅出.NET泛型编程.NET泛型编程VIP专享VIP免费

深入浅出.NET泛型编程.NET泛型编程_第1页
深入浅出.NET泛型编程.NET泛型编程_第2页
深入浅出.NET泛型编程.NET泛型编程_第3页
前言 .NET 2.0中泛型的出现是一个令人激动的特征。但是,什么是泛型?你需要它们吗?你会在自己的应用软件中使用它们?在本文中,我们将回答这些问题并细致地分析泛型的使用,能力及其局限性。 类型安全 .NET中的许多语言如 C#,C++和 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添加给它。然后我循环遍历该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. 什么是泛型? 泛型允许你在编译时间实...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部