为什么不能在lambda表达式中使用ref或out参数?
我今天遇到了错误,找到了解决方法,但是我仍然很好奇为什么这是编译时错误。
CS1628:无法在匿名方法,lambda表达式或查询表达式中使用ref或out参数'parameter'
这是一个简单的例子:
private void Foo()
{
int value;
Bar(out value);
}
private void Bar(out int value)
{
value = 3;
int[] array = { 1, 2, 3, 4, 5 };
int newValue = array.Where(a => a == value).First();
}
它与迭代器有关,但本文中的大部分相同推理(毕竟也是埃里克·利珀特(Eric Lippert&mdash;他也是语言设计团队的一员))适用于lambda:< blogs.msdn.com/ericlippert/archive/2009/07/13 /… >
—
Joel Coehoorn
请问您找到了什么解决方法?
—
Beatles1692
您可以只声明一个局部普通变量并对其进行处理,然后将结果分配给value ...添加一个var tempValue = value; 然后使用tempValue。
—
醉酒代码猴子