Stu*_*ler 1 c# generics abstract-class
以下代码:
private IList<T> DoStuff<T>()
{
IList<T> res = new List<T>();
for (int i = 0; i < 10; i++)
{
T item = DoOtherStuff<T>();
res.Add(item);
}
return res;
}
private T DoOtherStuff<T>() where T : new()
{
return new T();
}
Run Code Online (Sandbox Code Playgroud)
生成以下错误:
'T'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法'DoOtherStuff()'中将其用作参数'T'
请问有人可以解释一下原因吗?
更改
private IList<T> DoStuff<T>()
Run Code Online (Sandbox Code Playgroud)
至
private IList<T> DoStuff<T>() where T : new()
Run Code Online (Sandbox Code Playgroud)
因为否则你不能保证T有一个new()构造函数.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |