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

C# 泛型类与泛型函数的实例学习

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

    本文导语:  所谓泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。 泛型可以用于类,也可以用于函数。 我们来看下面的例子。 泛型类:   public class MyClass { publ...

所谓泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。
泛型可以用于类,也可以用于函数。

我们来看下面的例子。

泛型类:
 

public class MyClass
{
public T MyElement { get; set; }
}

泛型函数:
 

public T ReturnElement()
{
throw new NotImplementedException();
}

不过,当你需要对MyElement进行实例化时,却不能使用new()。
添加如下代码即可实例化:

泛型类:
 

public class MyClass where T: new()
{
public T MyElement { get; set; }

public MyClass()
{
this.MyElement = new T();
}
}

泛型函数:
 

public T ReturnElement() where T : new()
{
return new T();
}
 

代码说明:
where作为对泛型类型T的一个限定或补充。
如果希望T是一个int的集合,这个集合可以是List,也可以是HashSet等等,只要它们都是从ICollection继承而来的,则可以添加对类型T的限定,同时要保证它还是可以实例化的:
 

public T ReturnElement()
where T : ICollection, new()
{
return new T();
}

进一步,如果希望放宽集合中元素的类型,比如只要是int,double等可比较的类型,它们都是从IComparable继承而来,则可以继续添加如下限定:
 

public T ReturnElement()
where T : ICollection, new()
where S : IComparable
{
return new T();
}

C# 的泛型类型用起来很方便,这里再为大家补充下C#泛型机制:
C#泛型能力有CLR在运行时支持:C#泛型代码在编译为IL代码和元数据时,采用特殊的占位符来表示范型类型,并用专有的IL指令支持泛型操作。而真正的泛型实例化工作以“on-demand”的方式,发生在JIT编译时。

对C#泛型如果可以应用自如,举一反三的话,就可以写出更为简洁高效的代码。
,祝大家学习进步。


    
 
 

您可能感兴趣的文章:

  • C#私有构造函数的简单例子
  • C#类的学习笔记之C#构造函数
  • 学习C#中的静态构造函数与复制构造函数
  • C# 静态构造函数使用总结
  • C#实现关闭显示器的函数一例
  • C#学习笔记之抽象类和抽象函数
  • C#生成MD5的函数代码
  • c#(asp.net)实现的文件下载函数
  • C#私有构造函数使用示例
  • C# 使用匿名函数解决EventHandler参数传递的难题
  • c#只读字段和常量的区别,以及静态构造函数的使用实例
  • C#中英文混合字符串截取函数
  • C#委托所蕴含的函数指针概念详细解析
  • C#中私有构造函数的特点和用途实例解析
  • c# 获取CookieContainer的所有cookies函数代码
  • c#和javascript函数相互调用示例分享
  • C#版的 Escape() 和 Unescape() 函数分享
  • C#四舍五入(函数)用法实例
  • C#只读字段和常量的区别 静态构造函数的例子
  • c#中oracle的to_date函数使用方法
  • php session_id()函数介绍及代码实例
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • Python过滤函数filter()使用自定义函数过滤序列实例
  • jquery中map函数与each函数的区别实例介绍
  • php构造函数与析构函数实例分析
  • getdate()函数的用法实例
  • T-SQL实例 函数结果设置为列别名
  • 有关Java构造函数的问题之二——实例性
  • 在JSP中如何实例化构造函数有参数的JavaBean?
  • PHP递归函数返回值使用实例
  • php 构造函数与析构函数应用实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • cityhash 32位,64位和128位介绍及函数列表
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


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

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

    浙ICP备11055608号-3