C#泛型有什么好处

关于Object类型:

1.object类型可以来引用任何类型的实例;

2.object类型可以存储任何类型的值;

3.可以定义object类型的参数;

4.可以把object作为返回类型。

 

这样做有很大的问题

1. 会因为程序员没有记住使用的类型而出错,造成类型不兼容;

2.值类型和引用类型的互化即装箱拆箱使系统性能下降。

 

C# 2.0提出的泛型就是避免强制类型转换,减少装箱拆箱提高性能,减少错误。

 

System.Collections.Generic命名空间提供许多集合类和接口的泛型版本。

 

定义:

public class GenericList<T>

{

       public void Add(T input) //T 制定成类型参数

       public T Add()   // T 制定成返回值

}

 

 

<T> 的 T 是类型参数,起到站位符的作用,编译时被真正类型取代。

使用泛型:

GenericList<int> list1 = new GenericList<int>();
GenericList<string> list2 = new GenericList<string>();
GenericList<类名> list3 = new GenericList<类名>();
GenericList<类名<int>> list4= new GenericList<类名<int>>();

 

以list1为例编译器生成以下的方法:
    public void Add(int input)

    public int Add()

 

 

有多个类型参数的泛型类:

public class 类名<T,U>

 

泛型约束:

确保泛型类使用的参数是提供特定方法的类型。

public class GeneriList<T> where T : IEmployee

 

假如IEmployee接口包含A 方法,编译器会验证用于替换T的类型一定要实现IEmployee接口。

泛型方法: 允许采取定义泛型时采用的方式

//定义泛型方法

static void Swap<T> (ref T lhs,ref T rhs)

{

   T temp;

   Temp = lhs,

   lhs = rhs;

   rhs = temp

}

 

 

//使用泛型方法

public static void TestSwap()

{

    int a=1,b=3;

    Swap<int>(ref a,ref b);

}

 

string s1="Hello",s2="wold";

 

Swap<string>(ref s1,ref s2);

}

 

 

有泛型类,泛型接口,泛型方法,泛型委托。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(list,object,C#,Class,input,编译器)