编译器错误 CS1947
更新:2007 年 11 月
错误消息
无法对范围变量“variable name”赋值 -- 它是只读的。
范围变量类似于 foreach 语句中的迭代变量。不能在查询表达式中为该变量赋值。
更正此错误
移除对范围变量的赋值。
如果需要,通过使用 let 子句引入一个新的范围变量,并使用该变量存储值。
示例
下面的代码生成 CS1947:
// cs1947.cs
using System.Linq;
class Test
{
static void Main()
{
int[] array = new int[] { 1, 2, 3, 4, 5 };
var x = from i in array
let k = i
select i = 5; // CS1947
x.ToList();
}
}