我有這樣的事情如何創建一個可以初始化值變量爲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