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

publicclassBaseClasswhereT:new(){publicTSomeMethod(){returnnewT();}}第一行的继承当中的new(),不是... public class BaseClass where T : new()
{
public T SomeMethod()
{
return new T();
}
}
第一行的 继承当中的new(),不是很明白其作用
展开
 我来答
bluelotus7
2009-08-31 · TA获得超过444个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:0
展开全部
第一: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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛和地
2009-08-31
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
这个是肯定上面已经定义这个new了,这个算是继承吧,继承new的东西
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笨瓜007
2009-08-31 · TA获得超过426个赞
知道小有建树答主
回答量:610
采纳率:0%
帮助的人:474万
展开全部
这个规定了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()约束必须放在最后"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haoluogaga
2009-08-31 · TA获得超过2378个赞
知道小有建树答主
回答量:1265
采纳率:0%
帮助的人:1021万
展开全部
没见过这种写法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江小右
2009-08-31 · TA获得超过6928个赞
知道小有建树答主
回答量:1195
采纳率:0%
帮助的人:831万
展开全部
new()是基类吗,是的话去看new()的定义就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式