在不使用函数的情况下重用循环中的代码

时间:2017-08-28 11:40:00

标签: c# loops refactoring code-duplication

我有以下代码扫描2D数组逐行

for (int i = 0; i < rows; ++i)
{
    for (int j = 0; j < cols; ++j)
    {
        // Code here that scans a 2D array using i & j as the indices
    }
}

接下来是另一组循环,按列扫描相同的数组

for (int j = 0; j < cols; ++j)
{
    for (int i = 0; i < rows; ++i)
    {
        // Code that is a near duplicate of the code in the previous set of loops
    }
}

上面两组循环中的代码几乎相同。有什么方法可以删除重复吗?我宁愿不将代码移动到一个单独的函数中,因为这个代码将经常在一个相当大的数组上运行,而AFAIK也没有办法在C#中强制内联。

1 个答案:

答案 0 :(得分:0)

您可能对方法

上的AggressiveInlining选项感兴趣
[MethodImpl(MethodImplOptions.AggressiveInlining)]
void Method2()
{
    // ... Aggressive inlining.
}

来源:https://www.dotnetperls.com/aggressiveinlining