Lambda表达式与C#中的语句混合

时间:2012-04-18 01:21:03

标签: lambda conditional expression operator-keyword

我有一部分代码,我必须使用一个带有通过lambda语句获得的参数的函数(为了简化,有些内容):

Item.Move(Array.Exists(mainArray, arrayItem => 
(variable == secondArray[Array.IndexOf(mainArray, arrayItem)]))
? secondArray[Array.IndexOf(mainArray, arrayItem)
: new Vector2(-variable.X, variable.Y));

问题是,在条件运算符的第一个操作中,arrayItem带有下划线并且显示错误“名称'arrayItem'在当前上下文中不存在”,即使它在开头定义lambda。

因此,我试图在lambda中添加一个语句,给一个外部定义的变量arrayItem的值,并带来很多错误。

有没有办法从lambda表达式引用这个变量?我无法弄清楚为什么它不会在条件运算符中延续。

1 个答案:

答案 0 :(得分:0)

试试这个:

Array.Exists(mainArray, (arrayItem) =>
    {
        return variable == secondArray[Array.IndexOf(mainArray, arrayItem)];
    });