編譯器錯誤 CS1941
更新:2007 年 11 月
錯誤訊息
'clause' 子句中的一個運算式的型別不正確。'method' 的呼叫時型別推斷失敗。
查詢運算式中的型別推斷是從資料來源中的項目型別流動而來。
若要更正這個錯誤
- 如果無法立即得知發生錯誤的原因,請仔細檢查查詢,並從資料來源往發生錯誤那點追蹤每個子句之結果的型別。
範例
因為要求 equals 運算子比較 int 與 string,所以下列程式碼會產生 CS1941。
// cs1941.cs
using System.Collections;
using System.Linq;
class Test
{
static int Main()
{
var nums = new[] { 1, 2, 3, 4, 5, 6 };
var words = new string[] { "lake", "mountain", "sky" };
IEnumerable e = from n in nums
join w in words on n equals w // CS1941
select w;
return 0;
}
}
型別推斷失敗的方法就是在編譯時期轉譯查詢子句的方法。