编译器错误 CS1947
无法对范围变量“变量名称”赋值 -- 它是只读的。
在 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();
}
}