泛型

我们在编写程序时经常遇到两个模块的功能非常相似,只是因为参数类
型不同,所以分别写多个方法处理每种数据类型,因为方法的参数类型
不同没法重用同样功能的代码。。例如:
public static void Swap(ref int num1,ref int num2){
Console.WriteLine ("SwapIntFunc");
}
public static void Swap(ref double num1,ref double num2){
Console.WriteLine ("SwapDoubleFunc");
}
public static void Swap(string num1,string num2){
Console.WriteLine ("SwapStringFunc");

}

我们可以采用根类Object,来解决这个问题:
public static void Swap(object obj1,object obj2){
Console.WriteLine ("SwapObj");
Console.WriteLine (obj1.ToString () + obj2.ToString ());
}

但是采用Object存在以下缺陷:
1 会出现装箱、折箱操作,这将在托管堆上分配和回收大量的变量,若
数据量大,则性能损失非常严重
2 在处理引用类型时,虽然没有装箱和折箱操作,但将用到数据类型的
强制转换操作,增加处理器的负担

C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定
的符号如“T”来作为一个占位符,代替实际的类型,等待在实例化时
再用一个实际的类型来代替:

public static void Swap<T>(ref T value0,ref T value1){
T temp = value0;
value0 = value1;
value1 = temp;
}

泛型的优点

1. 使用泛型可以的重用代码,保护类型的安全以及提高性能
2. 降低强制转换或装箱操作的成本和风险
3. 可以对泛型参数进行限定以访问特定数据类型的方法


泛型类型参数

在泛型类型或方法定义中,类型参数是客户端在实例化泛型类型的
变量时指定的特定类型的占位符。在上面例子泛型方法当中T即为泛
型类型参数。

泛型类型参数注意点

1. 泛型类型参数可以有多个
2. 泛型类型参数可以是编译器识别的任何数据类型
3. 泛型类型参数命名需要遵守命名规则
(1) 使用描述性名称命名泛型类型,并且使用T作为前缀
(2) 单个字母名称完全可以让人了解其表示的含义使用单个大写字母命名


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值