c#anonymus作为参数

时间:2017-04-04 15:23:33

标签: c# parameters delegates anonymous-function

我目前以c#开头,并希望使用匿名函数与字段(二维数组)进行交互。我想要实现的目标看起来应该是这样的。

//...somewhere in class
private int[][] field1;

interactWithElements(field1, {
  x++;
  //...more complex stuff
});

private void interactWithElements(int[][] field, 
                                  Func anonymusFunction(int x)) {
  for (int x = 0; x < field.Length; x++) {
    for (int y = 0; y < field[0].Length; y++)) {
      anonymusFunction(field[x][y]);
    }
  }
}

在c#中这样的事情是可能的吗?它是什么时候,我怎么能这样做? 也许和代表一起?

谢谢alredy。

1 个答案:

答案 0 :(得分:0)

你快到了那里:

//...somewhere in class
private int[][] field1;

interactWithElements(field1, x => {
  x++;
  //...more complex stuff
});

你已经定义了一个lamda表达式x => { x++; },请参阅此guide以获取相关信息。

其余只需要正确的参数。

private void interactWithElements(
    int[][] field, 
    Action<int> anonymusFunction) 
{
  for (int x = 0; x < field.Length; x++) {
    for (int y = 0; y < field[0].Length; y++)) { // <- you may have meant x instead of 0
      anonymusFunction(field[x][y]);
    }
  }
}

如果您想定义一些内联函数,可以返回Func<T, TResult>

如果您在没有返回内容的情况下感到满意,请使用Action<T>

作为旁注,您可以使用这些委托指定相当多的输入参数,但太多可能会让人感到困惑!