C# 特性之泛型
2010-09-30 22:35:56 来源:WEB开发网核心提示:泛型,.NET的这个特性相信大家都已经很熟悉了,C# 特性之泛型,提起泛型,不能不首先提到C++中的模板,这意味着程序员可以即能和使用普通方法一样使用这些方法,同时又能享受泛型带来的方便,C++中模板的引入大大提高了代码的重用性,因此也得到了许多程序员的喜爱
泛型,.NET的这个特性相信大家都已经很熟悉了,提起泛型,不能不首先提到C++中的模板,C++中模板的引入大大提高了代码的重用性,因此也得到了许多程序员的喜爱。因此,在同为强类型语言平台的.NET 2.0和Java 1.5中,它们也都不约而同的引入了泛型的对语言和平台的支持。不过虽然三种语言最终都提供了将类型参数化的功能,然而这个功能在三个平台或语言中的实现却大大不同。相对来说,C++的模板功能是三者中最为强大的,不过由于.Net和Java对类型安全和稳定性要求更高,它们对泛型的支持要稍微简单,不过即使如此,二者对泛型特性的实现也引起了两个阵营中程序员们的争论,不过最终普遍认为Java的伪泛型(擦拭法)要比.NET的JIT级别的真正的泛型性能要差(java仍然有装箱,拆箱操作)。当然这些是后话,下面我们来看看.NET的泛型到底如何使用吧!
基本介绍
.NET 2.0以后以后支持在很多类型上使用泛型,包括类、结构、接口、委托和方法成员,在这些类型上使用泛型和在类上使用是一样的。它甚至支持同一个接口但不同泛型类型的实现,这有点类似重载在类级别的实现。最后.NET允许你同时定义多个泛型类型。
在泛型方法中的泛型类型基本跟在类中使用情况一样,不过泛型方法有一个方便程序员的地方就是它的类型推断功能,这意味着程序员可以即能和使用普通方法一样使用这些方法,同时又能享受泛型带来的方便。e.g.
代码
static void Test<T, U>(T t, U u) { }
static void main()
{//在函数中我们可以不用声明参数类型,编译器会自动根据实际数据
//自动推断类型
Test(10, "20");
Test(1.1, 2.2);
}
[]
- ››特性信息
更多精彩
赞助商链接