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){}})
随机推荐
- 汽车收费 C++ PTA
7-1 汽车收费(10 分) 现在要开发一个系统,管理对多种汽车的收费工作. 给出下面的一个基类框架 class Vehicle { protected: string NO;//编号 public: ...
- ASP.NET Web Pages:目录
ylbtech-.Net-ASP.NET Web Pages:目录 1. 官网返回顶部 1. https://www.asp.net/web-pages 2. https://msdn.microso ...
- 去除adb传输中的^M
学习sed过程中,在文本中每行追加内容,发现使用adb会在行末追加一个看不到^M. 场景一:adb保存到文件 adb shell ps|head -n 10 > text.txt,使用sed进行 ...
- google浏览器清除缓存
google浏览器设置不缓存的方法 摘要:我们在做web开发的时候特别是在调试js时,会经常使用的google浏览器,这个时候就要我们修改过的代码可能不能生效.这是因为我们的浏览器默认是有缓存的,但是 ...
- configure: error: You need a C++ compiler for C++ support.
安装pcre包的时候提示缺少c++编译器 报错信息如下: configure: error: You need a C++ compiler for C++ support. 解决办法,使用yum安装 ...
- 使用 SignalR与SSE(Sever sent event)向客户端推送提示信息
最近有个项目想把c/s的代码转成mvc的,这听起来并不困难. 如果UI和业务逻辑良好分离了的话,不会花太多的功夫,应该多数的内容都能重复利用. 但在实际的操作过程中,发现业务逻辑代码和UI提示全是混在 ...
- svn快速安装
windows版本控制系统. 用VisualSVN server 服务端和 TortoiseSVN客户端搭配使用 软件下载 VisualSVN-Server:http://subversion.apa ...
- springboot - mybatis - 下划线与驼峰自动转换 mapUnderscoreToCamelCase
以前都是在mybatis.xml中来配置,但是spring boot不想再用xml配置文件.网上搜寻了好久,才找到设置办法:sessionFactoryBean.getObject().getConf ...
- J2SE 8的Lambda --- 语法
语法例子 LambdaGrammarTest lambdaTest = new LambdaGrammarTest(); // 1. 能够推导出类型的,可以不写类型 String[] planets ...
- Spring MVC 重定向
@RequestMapping("/testRedirect") public String testRedirect(){ System.out.println("te ...