我有这样的事情如何创建一个可以初始化值变量为0或引用变量来新(NOT NULL)
V Func<V>()
{
// do stuff
V res = default(V);
// more stuff
return res;
}
的问题是,我想水库是0或一个新的通用方法V
的实例我尝试创建2种方法
Func<V> where T: new()
Func<V> where T: struct
但令人惊讶的,这是不允许
我的解决办法是有2个功能
FuncNew<V> where T: new()
...
res = new V();
....
和
FuncDefault<V> where T: struct
...
res = default(V)
...
编辑:总结答案
新(T)将新建立一个ref或值类型;我没有意识到
什么是确定返回值是否是'V'或0的新实例? – Oded 2011-05-18 20:28:08
你甚至没有写出正确的方法声明,而'where T:new'的约束是无效的。即使它*有效,您也不能通过类型约束来重载方法。 – 2011-05-18 20:28:20
在您尝试的解决方案中,[约束不是签名的一部分](http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are-not-part-of-the- signature.aspx)。 – 2011-05-18 20:28:40