编译器错误 CS1940
找到源类型“type”的多个查询模式实现。 对“method”的调用不明确。
当定义了查询方法的多个实现,而编译器无法确定最适合的查询时,则会生成此错误。 在下面的示例中, Select
的两个版本具有相同的签名,因为它们都接受同一 int
作为输入参数,并且返回值均为 int
。
- 仅为每个方法提供一个实现。
以下代码生成 CS1940:
C#
// cs1940.cs
using System; //must include explicitly for types defined in 3.5
class Test
{
public delegate int Dele(int x);
int num = 0;
public int Select(Func<int, int> d)
{
return d(this.num);
}
public int Select(Dele d) // CS1940
{
return d(this.num) + 1;
}
public static void Main()
{
var q = from x in new Test()
select x;
}
}