我目前以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。
答案 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>
作为旁注,您可以使用这些委托指定相当多的输入参数,但太多可能会让人感到困惑!