c#中new()约束符有什么作用?
publicclassBaseClasswhereT:new(){publicTSomeMethod(){returnnewT();}}第一行的继承当中的new(),不是...
public class BaseClass where T : new()
{
public T SomeMethod()
{
return new T();
}
}
第一行的 继承当中的new(),不是很明白其作用 展开
{
public T SomeMethod()
{
return new T();
}
}
第一行的 继承当中的new(),不是很明白其作用 展开
6个回答
展开全部
第一: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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是肯定上面已经定义这个new了,这个算是继承吧,继承new的东西
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个规定了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()约束必须放在最后"
不过你这类的签名是不是有问题?
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()约束必须放在最后"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没见过这种写法!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new()是基类吗,是的话去看new()的定义就知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询