为什么我不能创建一个返回类型的接口方法List<T>
?我遇到了这个编译错误“找不到类型或命名空间名称'T'”
interface ILoader
{
List<T> LoadValues();
}
感谢您的任何意见。
为什么我不能创建一个返回类型的接口方法List<T>
?我遇到了这个编译错误“找不到类型或命名空间名称'T'”
interface ILoader
{
List<T> LoadValues();
}
感谢您的任何意见。
你T
的界面应该是什么?对于编译器,T
此时只是一个未知标识符。
您需要为 指定一些东西T
,某些类型用作 的类型参数List<T>
。
根据您想要实现的目标,有四个选项:
在接口/类级别声明T
为通用参数:
interface ILoader<T>
{
List<T> LoadValues();
}
在方法级别声明T
为泛型参数:
interface ILoader
{
List<T> LoadValues<T>();
}
将固定类型分配为T
; 例如int
(wlog):
interface ILoader
{
List<int> LoadValues();
}
在更高的嵌套级别上声明T
为通用参数(感谢Jeppe Stig Nielsen指出这种可能性):
class Outer<T>
{
interface ILoader
{
List<T> LoadValues();
}
}
T 泛型参数也必须在接口中声明。像这样的东西:
interface ILoader<T>
{
List<T> LoadValues();
}
你应该这样做:
interface ILoader<T>
{
List<T> LoadValues();
}
或者
interface ILoader
{
List<T> LoadValues<T>();
}
甚至,可能:
interface ILoader
{
List<dynamic> LoadValues();
}
^不是最好的主意,但可以使用。