什么是更简洁的计算偏移量的方法?

B. *_*non -2 c# arrays algorithm refactoring

这段代码:

private int GetColumnToPopulate(int columnBase, int offset) {
    int duckbillColNum = 0;
    switch (columnBase) {
        case 0:
            duckbillColNum = 1;
            break;
        case 1:
            duckbillColNum = 5;
            break;
        case 2:
            duckbillColNum = 9;
            break;
        case 3:
            duckbillColNum = 13;
            break;
        case 4:
            duckbillColNum = 17;
            break;
        case 5:
            duckbillColNum = 21;
            break;
        case 6:
            duckbillColNum = 25;
            break;
        case 7:
            duckbillColNum = 29;
            break;
    }
    duckbillColNum += offset;
    return duckbillColNum;
}
Run Code Online (Sandbox Code Playgroud)

...很容易理解,但是冗长而笨重.我想精简它.我的伪代码是这样的:

int[] colBases
{
    0..7
}
int[] offsets
{
    1,5,9,13,17,21,25,29
}
int idx = colBases.IndexOf(columnBase);
duckbillColNum = offsets[idx];
Run Code Online (Sandbox Code Playgroud)

...或者也许是一个多维的int数组?无论如何,"IndexOf"业务当然不会[ile,ute].

Pin*_*nyM 5

怎么样:

private int GetColumnToPopulate(int columnBase, int offset) {
   return (columnBase * 4) + 1 + offset;
}
Run Code Online (Sandbox Code Playgroud)