where T:new() 是什么意思
经常看到方法后面加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){}})
随机推荐
- LwIP:处理链路状态改变
[文/告别年代 Email:byeyear@hotmail.com] 重大修订记录 ----------------------------------------- 2016.11.03 感谢@ ...
- appiu 笔记
1.要在手机上输入字符, 要屏蔽手机键盘 于是可以想办法屏蔽软键盘,只需在desired_caps{}设置里面加两个参数 unicodeKeyboard是使用unicode编码方式发送字符串reset ...
- [转]Java.APK 反编译
本文转自:http://blog.csdn.net/vipzjyno1/article/details/21039349/ (注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进 ...
- ActiveMQ 高可用集群安装、配置(ZooKeeper + LevelDB)
ActiveMQ 高可用集群安装.配置(ZooKeeper + LevelDB) 1.ActiveMQ 集群部署规划: 环境: JDK7 版本:ActiveMQ 5.11.1 ZooKeeper 集群 ...
- ubuntu 14.04 lamp 安装与配置
一.安装apache 1.打开终端:Ctrl+Alt+T sudo apt-get update 2.通过apt-get方式安装Apache: sudo apt-get install apache2 ...
- 用PNG作为Texture创建Material
转自:http://aigo.iteye.com/blog/2279512 1,导入一张png素材作为Texture 2,新建一个Material,设置Blend Mode为Translucent,连 ...
- numpy的linspace函数
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False,dtype=None)[source] 文档:https://docs ...
- Jquery阻断事件冒泡(转载)
JQuery阻止事件冒泡 冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个d ...
- Python模块之shelve
shelve是python的自带model. 可以直接通过import shelve来引用. shelve类似于一个存储持久化对象的持久化字典,即字典文件. 使用方法也类似于字典. 保存对象至shel ...
- Select算法(最坏复杂度O(n))
#include<iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm&g ...