当前位置:首页 > 计算机相关 > .net专区 > 正文内容

C#泛型的好处

piikee15年前 (2009-07-06).net专区583
关于object类型:
1.object类型可以来引用任何类型的实例;
2.object类型可以存储任何类型的值;
3.可以定义object类型的参数;
4.可以把object作为返回类型。
但是--这样做有很大的问题
1.会因为程序员没有记住使用的类型而出错,造成类型不兼容;
2.值类型和引用类型的互化即装箱拆箱使系统性能下降。
C#2.0提出的泛型就是避免强制类型转换,减少装箱拆箱提高性能,减少错误。
System.Collections.Generic命名空间提供许多集合类和接口的泛型版本。
定义:
public class GenericList
{
public void Add(T input)//T制定成类型参数
public T Add()//T制定成返回值
}
的T是类型参数,起占位符的作用,编译时被真正类型取代。
使用泛型:
GenericList list1 = new GenericList();
GenericList list2 = new GenericList();
GenericList<类名> list3 = new GenericList<类名>();
GenericList<类名> list4= new GenericList<类名>();
以list1为例编译器生成以下的方法:
public void Add(int input)
public int Add()
有多个类型参数的泛型类:
public class 类名<T,U>
泛型约束:
确保泛型类使用的参数是提供特定方法的类型。
public class GenericList where T : IEmployee
假如IEmployee接口包含A方法,编译器会验证用于替换T的类型一定要实现IEmployee接口。
泛型方法:允许采取定义泛型类时采用的方式
//定义泛型方法static void Swap(ref T lhs, ref T rhs)
{ T temp; temp = lhs; lhs = rhs; rhs = temp; }
//使用泛型方法
public static void TestSwap(){    int a=1,b=3;Swap(ref a,ref b);
string s1="Hello",s2="world";Swap(ref s1,ref s2);}
有泛型类,泛型接口,泛型方法,泛型委托

扫描二维码推送至手机访问。

版权声明:本文由萍客小居[www.piikee.net]发布,如需转载请注明出处。

本文链接:https://www.piikee.net/352.html

分享给朋友:

相关文章

Visual Studio 2008 安装出错 无法安装 的解决办法

1 安装vs2008 team 中文正式版,会出现deffactory.dat读取错误。解决方案:进入那个文件夹。替换deffactory.dat ,新建一个文本文档,把下面的内容粘贴进去,然后保存替换覆盖这个文件。或者用 打开,删除原有的...

Visual Studio配备供你的应用使用的图标库

操作步骤:在Visual Studio的安装目录:\Program Files\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\ 有个 VS2008ImageLibrary.zi...

SQL语句重命名数据库表和表中的列

A.   重命名表将表   oldTableName  重命名为  newTableName :EXEC   sp_rename   'oldTableName','newTableName'B.   重命名列将表 EMIS  中的列  ...

asp.net实现动态显示当前时间

asp.net实现动态显示时间的两个方法方法一:不用javascrip,而是用了AJAX。(开销比较大,每秒向服务器请求一次时间)Default.aspx页面:先拉一个ScriptManager控件到页面,然后拉一个UpdatePanel控...

zedgraph去掉右键菜单中的选项

在zedgraph生成的图表中,右键菜单会出现”恢复默认大小“等菜单项,这些选项可以通过如下方法去掉。方法一:没有zedgraph源文件的情况:在zedGraph控件中的ContextMenuBuilder事件中加入如下操作:private...

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

C#窗体的多线程一直是个难题,总是要出现奇奇怪怪的错误。今天开发alexSEO软件时,出现了在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。主要出现问题代码如下:public   void runSEO(){...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。