有关C#泛型的好处
本文导语: 关于object类型: 1,object类型可以来引用任何类型的实例; 2,object类型可以存储任何类型的值; 3,可以定义object类型的参数; 4,可以把object作为返回类型。 这样做有很大的问题。 1.会因为程序员没有记住使用的类型而...
关于object类型:
2,object类型可以存储任何类型的值;
3,可以定义object类型的参数;
4,可以把object作为返回类型。
这样做有很大的问题。
1.会因为程序员没有记住使用的类型而出错,造成类型不兼容;
2.值类型和引用类型的互化即装箱拆箱使系统性能下降。
C#2.0提出的泛型就是避免强制类型转换,减少装箱拆箱提高性能,减少错误。
System.Collections.Generic命名空间提供许多集合类和接口的泛型版本。
定义:
{
public void Add(T input)//T制定成类型参数
public T Add()//T制定成返回值
}
的T是类型参数,起占位符的作用,编译时被真正类型取代。
使用泛型:
GenericList list2 = new GenericList();
GenericList list3 = new GenericList();
GenericList list4= new GenericList();
以list1为例编译器生成以下的方法:
public int Add()
有多个类型参数的泛型类:
public class 类名
泛型约束:
确保泛型类使用的参数是提供特定方法的类型。
public class GenericList where T : IEmployee
假如IEmployee接口包含A方法,编译器会验证用于替换T的类型一定要实现IEmployee接口。
泛型方法:允许采取定义泛型类时采用的方式
//定义泛型方法
static void Swap(ref T lhs, ref T rhs)
{ T temp; temp = lhs; lhs = rhs; rhs = temp; }
//使用泛型方法
public static void TestSwap(){ int a=1,b=3;
Swap(ref a,ref b);
string s1="Hello",s2="world";
Swap(ref s1,ref s2);}
有泛型类,泛型接口,泛型方法,泛型委托等。