C#传递内联代码时出现问题
嘿,我知道已经有很多问题包含了我需要的答案,但是我很难在Func/Action/Delegate/Lambda之间进行筛选,作为一个javascript开发人员,这一切都感觉不必要的复杂 我正在使用2d数组,并希望编写一个方法,该方法接受int-width、int-height和任何形式的内联代码,以供每个x/y对调用。关键是要避免反复编写嵌套for循环的bug和时间。但是我不确定应该使用什么类型的内联代码,或者它看起来像什么。我试过很多组合,但都没成功C#传递内联代码时出现问题,c#,multidimensional-array,inline-code,C#,Multidimensional Array,Inline Code,嘿,我知道已经有很多问题包含了我需要的答案,但是我很难在Func/Action/Delegate/Lambda之间进行筛选,作为一个javascript开发人员,这一切都感觉不必要的复杂 我正在使用2d数组,并希望编写一个方法,该方法接受int-width、int-height和任何形式的内联代码,以供每个x/y对调用。关键是要避免反复编写嵌套for循环的bug和时间。但是我不确定应该使用什么类型的内联代码,或者它看起来像什么。我试过很多组合,但都没成功 我应该在方法上使用什么签名,如何调用它?
我应该在方法上使用什么签名,如何调用它?我通常使用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);
}
}
}
ForEachPair(5,5,(x,y)=>
{
控制台写入(x+“,”+y);
});
公共void ForEachPair(int-width、int-height、动作回调)
{
对于(int i=0;i
虽然有很多方法可以做到这一点,但最简单也是最好的方法之一是定义委托并将其作为参数接受
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));
请向我们展示2D阵列的定义。是。我用x和y表示for循环中的迭代变量。最终的要点是调用“PassedinLineCode(x,y)”,我有不同的2d数据表示。这就是我想要一个简单地生成每个整数坐标并将它们传递给特定代码的方法的主要原因。我真正的问题是选择正确的内联代码,并在方法签名中使用它,然后调用它