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

C#泛型的好处

piikee14年前 (2009-07-06).net专区358
关于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);}
有泛型类,泛型接口,泛型方法,泛型委托

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

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

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

分享给朋友:

相关文章

SQL 2005中设置两个主键的方法

SQL2005中,可视化见表,选中一行设置主键,然后再选一行设置主键,则刚才设置的主键就自动取消了。怎么设置两个主键呢。其实Windows中很多东西都是融会贯通的,想一想多选的Ctrl键不就解决了~ 按住Ctrl,用鼠标选两个行,然后右键,...

SQL卸载重装遇到实例名重复,实例名删不掉的问题

Sql2005卸载后,在重新安时会碰到以前安装的实例名还在的问题,然后如果自定义实例名一样的话会报错说实例名重复。那么怎样删除以前的那些实例名呢?首先,确认你把所有SQL相关程序都卸载了。然后,删除C:\Program Files\Micr...

图解vs2008打包全过程,含卸载功能

图解vs2008打包全过程,含卸载功能

1:新建安装部署项目打开VS编辑器,点击新建项目,选择:其他项目类型--安装与部署--安装向导(安装项目也一样),然后点击确定.(详细见下图)本文虽以VS2005打包为例,但是在VS2008下一样也可以用此法,本人已经在VS2008下测试通...

Windows 7下IIS+VS2008+Office2007无错完美安装方法

(1)先把IIS给装上。(2)安装VS2008。(3)安装Office2007。注意顺序,还有VS2008必须解压出来安装,不能用虚拟光驱。仅此而已。...

AjaxControlToolkit中各个控件功能说明

1.Accordion控件1.1【功能概述】Accordion可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsibleP...

C#的窗体(WinForm)退出杂谈

1、Winform点击退出按钮,需要确认再退出:private void MainForm_FormClosing(object sender, FormClosingEventArgs e){if (MessageBox.Show("是否...

发表评论

访客

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