更新:2007 年 11 月

错误消息

无法将范围变量“name”作为 out 或 ref 参数传递。

范围变量是在查询表达式中引入的只读变量,它用作源序列中每个连续元素的标识符。因为该变量不能以任何方式进行更改,所以通过 refout 传递它没有任何意义。因此,这两个操作都是无效的。

更正此错误

  • 通过值传递范围变量。

示例

下面的示例生成 CS1939:

 复制代码
// cs1939.cs
using System.Linq;
class Test
{
    public static void F(ref int i)
    {
    }
    public static void Main()
    {
        var list = new int[] { 0, 1, 2, 3, 4, 5 };
        var q = from x in list
                let k = x
                select Test.F(ref x); // CS1939
    }
}