码迷,mamicode.com
首页 > 其他好文 > 详细

C 精髓【月儿原创】第三讲 C 泛型有什么好处

时间:2018-12-15 11:45:24      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:content   实现   view   存储   接口   employee   先后   错误   多个   

说明:准备出一个系列,所谓精髓讲C#语言要点。这个系列没有先后顺序,不过尽量做到精。可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注。

C#精髓

第三讲 C#泛型有什么好处

作者:清清月儿

主页:http://blog.csdn.net/21aspnet/           时间:2007.3.24

关于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);}
有泛型类,泛型接口,泛型方法,泛型委托
 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

C 精髓【月儿原创】第三讲 C 泛型有什么好处

标签:content   实现   view   存储   接口   employee   先后   错误   多个   

原文地址:https://www.cnblogs.com/siwnchs/p/10122647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!