经常看到方法后面加where T:new() ,下面来解释下

比如如下这个方法
  protected static T CreateNewInstance<T>() where T : new() 
        
            return new T(); 
        }

解释如下:

T后面跟的是泛型约束,啥叫泛型约束,就是你必须要符合这个规则来,不然就不让你编译通过 。

后面的new()代表这个T 必须有一个无参的构造函数,

当然一个新建的class。这个类做为T,也是可以编译通过的。

因为如果类中没有构造函数会默认就加一个无参的构造函数,刚好符合这个约束。

比如

Public Class People{}

这个people 做为T默认是可以编译通过的。因为他等同于

Public Class People(public People(){})

但如果有一个这样的People就会编译不通过了。

Public Class People(public People(string s){}})

随机推荐

  1. setting.xml配置文件 --转载

    转载出处:http://www.cnblogs.com/yakov/archive/2011/11/26/maven2_settings.html 在此,简单的说下 setting.xml 和 pom ...

  2. MessageFormat用法(转载)

    MessageFormat用来格式化一个消息,通常是一个字符串,比如: String str = "I'm not a {0}, age is {1,number,short}", ...

  3. Java-Runoob-高级教程-实例-数组:08. Java 实例 – 数组填充

    ylbtech-Java-Runoob-高级教程-实例-数组:08. Java 实例 – 数组填充 1.返回顶部 1. Java 实例 - 数组填充  Java 实例 以下实例我们通过 Java Ut ...

  4. Splunk 交流

    1. 初识splunk Splunk Enterprise Splunk Free Splunk Universal Forwarder,通用转发器

  5. 探究CSS中border-top属性的使用

    上一节我们介绍了CSS top属性的用法,那么这节关于CSS border-top属性用法学习起来就会轻松一些,border-top 简写属性把上边框的所有属性设置到一个声明中. 本文向大家描述一下C ...

  6. logger常用方法

    #!/usr/bin/env python # encoding: utf-8  # Date: 2018/5/25 import loggingfrom logging import handler ...

  7. css模拟下拉菜单

    <!DOCTYPE html > <head>     <meta http-equiv="Content-Type" content="t ...

  8. SQL SERVER回滚恢复误操作的数据

    在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议: 1. 在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片 ...

  9. django-媒体文件,图片存储

    1.settings.py # 媒体文件 MEDIA_ROOT = 'media/'

  10. html_table表格

    ## `table`表格 表格的常用标签 - `table`表格- `thead`表格头- `tbody`表格主体- `tfoot`表格尾- `th`元素定义表头单元格- `tr`定义表格行- `td ...