編譯器錯誤 CS1940
更新:2007 年 11 月
錯誤訊息
找到來源型別 'type' 的多個查詢模式實作。模稜兩可的呼叫 'method'。
如果定義了多個查詢方法實作 (Implementation),而編譯器 (Compiler) 無法釐清哪個實作最適合用於查詢,則會產生這個錯誤。在下列範例中,因為兩個版本的 Select 都接受一個 int 做為輸入參數,而且具有 int 做為傳回值,所以它們具有相同的簽章 (Signature)。
若要更正這個錯誤
- 每個方法只提供一個實作。
範例
下列程式碼會產生 CS1940:
// 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;
}
}