我在将多个if语句(如下面的示例)转换为更紧凑的代码时遇到问题。我虽然是关于表或多维数组的,但是也许你们知道更好的解决方案。我的代码中大约有30条if语句,它们中没有明确的模式,以便轻松地将该代码转换为更快,更紧凑的代码。

我该如何改善?

if (D == 0.25)
{
    if (threadPerInch == 20)
    {
        le = 0.22;
    }
    else if (threadPerInch == 28)
    {
        le = 0.25;
    }
    else if (threadPerInch == 32)
    {
        le = 0.28;
    }
    else
    {

    }
}

最佳答案

由于仅检查是否相等,因此应使用实质上允许直接执行此查找的字典。为此,将threadPerInchle的映射定义为某个地方的字典,例如作为班级成员:

Dictionary<int, double> leForThreadPerInch = new Dictionary<int, double>() {
    [20] = 0.22,
    [28] = 0.25,
    [32] = 0.28
};


然后,您可以尝试从中检索值以获得le值:

if (D == 0.25)
{
    if (!leForThreadPerInch.TryGetValue(threadPerInch, out le))
    {
        // else case
    }
}

关于c# - 如何在C#中将多个if语句i替换为更紧凑的代码/类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40780626/

10-11 20:46