c#中new()约束符有什么作用?

发布网友 发布时间:2022-04-25 20:39

我来回答

5个回答

热心网友 时间:2022-06-17 05:46

第一:where只用于泛型,所以应该是:
public class BaseClass<T> where T : new()
{
public T SomeMethod()
{
return new T();
}
}
第二:
where T : new()的意思是,这个T必须有public构造函数,如果new BaseClass<T>()的时候,这个T没有public 构造函数,将编译错误.

第三:
除了new(),where后面可以有好多种内容,去约束T.
比如:public class MyGenericClass<T> where T:IComparable { }等.

详情见:
http://msdn.microsoft.com/en-us/library/d5x73970.aspx

参考资料:http://msdn.microsoft.com/en-us/library/d5x73970.aspx

热心网友 时间:2022-06-17 05:47

这个是肯定上面已经定义这个new了,这个算是继承吧,继承new的东西

热心网友 时间:2022-06-17 05:47

这个规定了T的类型必须要有一个无参的公有的构造方法.
不过你这类的签名是不是有问题?
BaseClass<T> where T : new()
应该是这样.
看下楼上给的MSDN地址吧,讲的比较细.
"The type argument must have a public parameterless constructor. When used together with other constraints, the new() constraint must be specified last."
这句我给你翻译下吧...有很多程序员不懂英语的..
"类型参数必须有一个公有的,无参数的构造方法.当和别的约束一起使用的时候,new()约束必须放在最后"

热心网友 时间:2022-06-17 05:48

没见过这种写法!

热心网友 时间:2022-06-17 05:48

new()是基类吗,是的话去看new()的定义就知道了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com