C#基础系列(11)-- 第四部分 C#高级特性 -- 泛型概念(1)

泛型将数据类型参数化,C#中的泛型类似于C++的模板。

 

使用泛型的优点:
当此类型需要操作值类型时,可以避免频繁的装箱和拆箱。
泛型的强类型检查可以在编译时发现错误。
在一定程度上让代码更为清晰,消除代码膨胀。

泛型类的示例请参考后续文章

 

常见的泛型方法的示例:

 

示例1:在数组中查找元素并返回其索引

 

经常使用泛型约束来限制T的数据类型,如:
where T : Demo, IDisposable, new() //要求T类型必须继承与Demo类,实现了IDisposable接口并实现了一个公共默认构造函数
where T: struct //要求T只能为值类型
where T: class  //要求T只能为引用类型

并且可以使用default(T)将T类型的变量初始化为默认值

如上面的方法签名可以改写为public static int Find<T>(T[] array, T searchValue) where T:struct 则实现的是在值类型数组中的查找

 

示例2:在数组中查找元素的最大值并返回其索引

 

 

示例3:逆置数组

要注意的是,虽然Array类也提供了Reverse()方法完成此功能,但它只接受引用类型System.Array,也就是说,对于值类型,Array.Reverse会发生装箱操作(可以用.NET Reflector查看其源码来验证)。

 

 

在实际的应用中,泛型经常和集合类相关,比如用List<T>替代ArrayList,用Dictionary<Tkey, Tvalue>替代HashTable,
使用Dictionary的案例可以参考
找出字符串中出现次数最多的字符及出现次数
从字符串中删除指定的字符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值