更新:2007 年 11 月

错误消息

“clause”子句中表达式的类型不正确。类型推理在对“method”的调用中失败。

如果为范围变量指定了不正确的显式类型,通常会生成此错误。

更正此错误

  • 如果范围变量是显式类型的,请确保该类型与循环访问的集合中的元素类型相同或可从该类型隐式转换。如果范围变量的前面带有 var 关键字,请移除 var

示例

下面的代码生成 CS1942:

 复制代码
// cs1942.cs
class Program
    {
        static void Main(string[] args)
        {
            var x = from var i in Enumerable.Range(1, 100) // CS1949
                    select i; //CS1942
        }
    }

CS1942 与 CS1949 相关,因为对范围变量使用 var 会导致因 var 不是类型而使基础 Cast<T> 运算失败。

请参见

概念

LINQ 查询表达式(C# 编程指南)

参考

var(C# 参考)