泛型C#

本文介绍了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 GenericList<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="world";

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

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值