在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近在学习.NET 2.0了(说来惭愧呀,万多年前就出VS2005了,现在才想起学.NET 2.0),粗略看了下,2.0版本较1.1版本多了不少新的特性,比如MaterPage,Theme,无刷新Call Server等,页面生命周期也多了不少方法,可以更精确的控制页面的呈现过程,令人激动呀。不过今天要说的不是.NET FrameWork 2.0,而是新版C#中的新特性:泛型
using System;
using System.Collections.Generic; using System.Text; namespace TestConsole2005
TestClass mt = new TestClass();
这样在客户端就没有办法改变mt的类型了,除非使用反射,但反射是在运行时指定类型信息,泛型则不同,泛型是在客户端编码时指定类型信息,比如上面的:
Test<TestClass, TestClass2> v = new Test<TestClass, TestClass2>();
这一句就是在实例化Test类时为T和T2指定详细的类型信息。
Test<TestClass2, TestClass> v = new Test<TestClass2, TestClass>();
为什么要使用泛型,其实反射也一样可以实现这样的功能。原因在于使用泛型可以保证类型的安全,而反射是到运行时才绑定类型信息,这样就很有可能出现类型不匹配的情况,而编译器是无法发现的。
Public class Test<T,T2> where T:ITest,new() where T2:ITest,new()
T和T2声明了Test类中的两个泛型类型,他们可以在客户端实例化该类时被显式指定,where是C#2005才有的用于约束泛型类型的关键字,上面的表达式是指泛型T和T2必须指定为实现了ITest接口的类,并且该类可以被实例化。 |
请发表评论