当前位置:  编程技术>.net/c#/asp.net

有关C#泛型的好处

    来源: 互联网  发布时间:2014-08-30

    本文导语:  关于object类型:   1,object类型可以来引用任何类型的实例; 2,object类型可以存储任何类型的值; 3,可以定义object类型的参数; 4,可以把object作为返回类型。 这样做有很大的问题。 1.会因为程序员没有记住使用的类型而...

关于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 类名

泛型约束:
确保泛型类使用的参数是提供特定方法的类型。
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.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关cocoon的问题??
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3