kem*_*002 13
public static void BuildGeneric<T>(List<T> l)
{
l = new List<T>();
var anything = new object();
l.Add(anything);
}
Run Code Online (Sandbox Code Playgroud)
应该是这个
public static void BuildGeneric<T>(out List<T> l)
{
l = new List<T>();
var anything = default(T);
l.Add(anything);
}
Run Code Online (Sandbox Code Playgroud)
现在你可以做到
BuildGeneric<object>(out l);
Run Code Online (Sandbox Code Playgroud)
由于下面有关于default关键字的讨论(评论),我想我应该包含一个链接:
http://msdn.microsoft.com/en-us/library/xwth0h0d(VS.80).aspx
没有.
l可以仅持有类型的对象T.
您的代码试图破坏泛型的整个目的.
如果您更改anything为类型T,它将起作用.
如果你把它强制转换T,它会编译,但会InvalidCastException在运行时抛出,除非它是实际的T.
你想做什么?