C# 传递内联代码时遇到问题
C# trouble passing inline code
嘿,我知道已经有很多问题包含了我需要的答案,但我很难在 Func/Action/Delegate/Lambda 之间进行筛选,作为一个 javascript 的人,这一切感觉不必要的复杂。
我正在使用 2d 数组,并且想编写一个方法来接受 int 宽度、int 高度和任何形式的内联代码,以便在每个 x/y 对中调用。重点只是为了避免一遍又一遍地编写嵌套 for 循环而产生的错误和时间。但我不确定要使用的内联代码的正确类型,或者它的外观。我尝试了很多组合,但无法解决问题。
我应该在方法上使用什么签名,我该如何调用它?
我通常使用action作为类型参数,调用时使用lambda:
ForEachPair(5, 5, (x, y) =>
{
Console.Write(x + "," + y);
});
public void ForEachPair(int width, int height, Action<int, int> callback)
{
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
callback(i, j);
}
}
}
虽然有很多方法可以做到这一点,但最简单和最好的方法之一是定义一个委托并将其作为参数接受。
delegate void XYFunction(int x, int y); // define the return type and args
void ForEachXYPair(int width, int height, XYFunction func)
{
// open your loop however
{
func(x, y);
}
}
然后调用它...
ForEachXYPair(4, 4, (int x, int y) => { work; });
// OR
ForEachXYPair(4, 4, new XYFunction(AMethodForAbstractionsSake));
嘿,我知道已经有很多问题包含了我需要的答案,但我很难在 Func/Action/Delegate/Lambda 之间进行筛选,作为一个 javascript 的人,这一切感觉不必要的复杂。
我正在使用 2d 数组,并且想编写一个方法来接受 int 宽度、int 高度和任何形式的内联代码,以便在每个 x/y 对中调用。重点只是为了避免一遍又一遍地编写嵌套 for 循环而产生的错误和时间。但我不确定要使用的内联代码的正确类型,或者它的外观。我尝试了很多组合,但无法解决问题。
我应该在方法上使用什么签名,我该如何调用它?
我通常使用action作为类型参数,调用时使用lambda:
ForEachPair(5, 5, (x, y) =>
{
Console.Write(x + "," + y);
});
public void ForEachPair(int width, int height, Action<int, int> callback)
{
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
callback(i, j);
}
}
}
虽然有很多方法可以做到这一点,但最简单和最好的方法之一是定义一个委托并将其作为参数接受。
delegate void XYFunction(int x, int y); // define the return type and args
void ForEachXYPair(int width, int height, XYFunction func)
{
// open your loop however
{
func(x, y);
}
}
然后调用它...
ForEachXYPair(4, 4, (int x, int y) => { work; });
// OR
ForEachXYPair(4, 4, new XYFunction(AMethodForAbstractionsSake));