假如有这样一个方法签名

public List<T> GetSomethingList<T> (int a,int b,string c) where T:class,new()
{
...
}

这表示GetSomethingList是个泛型方法,调用的时候需要确定T到底是什么类型,但这里类型T需满足 where T:class,new() 这个条件,

其中 where T:class,表示T必须是引用类型(而不是int等值类型,或者ValueType的其他子类),new()表示这个类型T还必须至少具备一个无参的构造函数(还可以有其他有参数的构造函数)。

如果对类型T只要求其中一个条件,可以写成

) where T:class //表示T必须是引用类型

) where T:new() //表示这个类型T还必须至少具备一个无参的构造函数

泛型约束 where T : class,new()的更多相关文章

  1. 06.C#泛型约束和高级泛型(三章3.3-3.4)

    吃午饭前继上篇泛型再写一篇关于泛型的文章,虽然总是被博客园移出首页,文章不精确实是大问题啊,会再接再厉的.进入正题. 先来说下泛型约束.当我们在使用泛型的时候通常会希望使用泛型实参时,参数能具备某一些 ...

  2. 转:C# 泛型编程之泛型类、泛型方法、泛型约束

    C# 泛型编程之泛型类.泛型方法.泛型约束 分类: asp.net c#2012-08-07 17:36 5998人阅读 评论(0) 收藏 举报 c#编程classobject编译器struct 泛型 ...

  3. 泛型约束new()的使用

    下面泛型约束代码,where字句后面有new()约束,T类型必须有公有的无参的构造函数. private T InternalCreate<T>() where T : IObjectWi ...

  4. 用LinQ扩展方法,泛型扩展方法,实现自定义验证字符是否空、对象是否为null,及泛型约束使用,Action的使用

    一.Linq扩展方法 1.扩展方法必须是静态方法.扩展方法所在的类必须是静态类 2.扩展方法里面的参数必须制定this关键字,紧跟需要扩展的类型,如下: 二.泛型约束 1.使用泛型的原因,是在不知道需 ...

  5. C# 泛型约束 xxx Where T:约束(二)

    泛型是什么? 通过上篇的实例  C# 泛型约束 xxx<T> Where T:约束(一),我们对泛型有一定的认识. 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程 ...

  6. C# 泛型约束 xxx<T> Where T:约束(一)

    泛型约束 代码举例 发现我们游戏的代码中,主程写了很多类似这样的代码: public static T CreateObject<T>(out int objectId) where T ...

  7. .Net 泛型约束

    本文内容 使用泛型约束的原因 未绑定的类型参数 作为约束的类型参数 参考资料 当"设计模式"出现时,人们提"用接口编程":后来,有了泛型,人们提"用泛 ...

  8. C#中泛型类,泛型方法,泛型约束实际应用

    前言 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用.在定义泛型类时,在对客户端代码能够在实例化类时 ...

  9. C# 泛型编程之泛型类、泛型方法、泛型约束

    来自Hauk的文章 C# 泛型编程之泛型类.泛型方法.泛型约束 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为 ...

  10. 泛型约束-swift

    1.泛型定义本体有参量类型约束: 2.泛型扩展对参量类型约束: 3.函数参量约束: 泛型类型的访问控制: 1.与类型无关的通用函数,泛型的任何实例都可以访问: 2.与类型有关的函数(通过扩展约束实现) ...

随机推荐

  1. yourphp问题中心

    1.前台读不出字段.数据库列表有的,但前台就适读不出来. 2.浏览次数+1与+2的问题 浏览+ <a href="{:URL('User-Register/index')}" ...

  2. thinkphp 语言包丢失

    Thinkphp 语言包丢失 造成的原因有那些 1.复制模板 预览时内容出现英文状态 如:show.html 解决:找到lang ,在zh-cn 复制想对应的文件包 改下名称就有可以 如:admin_ ...

  3. 北斗/GPS

    北斗/GPS都是用的nmea通用协议. NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA.$GPGSA.$GPGSV.$GPRMC.$GPVTG.$GPGLL等 ...

  4. VS中修改站点运行方式(集成 Or 经典)

    以前写过一篇博客使用HttpHander截取用户请求. 写进Web.Config时..运行会报 在集成环境下不能使用站点配置 就想改成经典..但是不会改..还修改过Framework配置什么的.. 那 ...

  5. django,python,svn_web

  6. 开源项目管理平台*redmine*的架设

    yum -y install ruby yum install rubygems gem install heroku gem install rack -v=1.0.1 gem install ru ...

  7. CSS样式表继承详解

    最近在恶补css样式表的基础知识.上次研究了css样式表之冲突问题详解 .这次是对 css 继承 特性的学习. 什么是css 继承?要想了解css样式表的继承,我们先从文档树(HTML DOM)开始. ...

  8. thinkphp-许愿墙-2

    在数组中,也可以使用函数,如: $data = array( 'username'=> I('username','', 'htmlspecailchars'), 'content'=> ...

  9. 自定义列表dl的使用原因和场合

    为什么要使用自定义列表? dl和ol, ul的区别? 要正确理解dl的意图, 理解 dl的 "语义" ! 才能知道为什么要使用dl, 以及在什么时候/ 什么情况下使用 dl? dl ...

  10. str_replace vs preg_replace

    转自:http://benchmarks.ro/2011/02/str_replace-vs-preg_replace/ 事实证明str_replace确实比preg_replace快. If you ...