Zol*_*res 0 c# generics overloading c#-3.0
Hy,我知道这听起来是一个非常愚蠢的问题.
这是我发现的:
public static List<SomeDTO> GetData(Guid userId, int languageId)
{
// Do something here
}
public static List<int> GetData(Guid userId ,int iNumberOfItems)
{
var result = GetData(userID,0);
return (from r in result select c.id).Take(iNumberOfItems).ToList<int>();
}
Run Code Online (Sandbox Code Playgroud)
我得到一个编译错误:
ClassLibrary'已经定义了一个名为'GetData'的成员,它具有相同的参数类型
第二个只返回第一个函数的id.
我知道这不起作用.
我知道有两个返回List <>类型,但它们返回不同的类型.
有人可以解释一下为什么吗?
我怎么解决这个问题?
更新此问题在F#上解决了!
Pat*_*and 12
您无法基于返回类型覆盖.如果查看方法签名,它看起来如下所示:
public static List<SomeDTO> GetData(Guid, int)
Run Code Online (Sandbox Code Playgroud)
和
public static List<int> GetData(Guid, int)
Run Code Online (Sandbox Code Playgroud)
您需要做的是以下之一:
现在,当您调用函数时,未指定返回类型.由于参数看起来相同,编译器不知道要调用哪个函数.但它不需要猜测,因为签名过于相似,它在编译时抱怨.
方法的返回类型不是签名的一部分.
如果您编码,将调用哪个
object obj = GetData(Guid userId, int languageId); ?
Run Code Online (Sandbox Code Playgroud)