c# 多个if-else语句简化

 这是我的代码,我想通过四个参数确定我查找的表的表号,一共有99张表,这里只显示了14张,如果全用if-else语句真的太丑了,一定有更好的办法吧?求告知(最好能写个大概),谢谢大佬们啦!!!

 

public int SelectTableNumber(double para1,double para2,double para3,double para4,double para5)
        {

            try
            {
                if (para1 == 150 && para2 == 180 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 1;
                }
                else if (para1 == 150 && para2 == 180 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 2;
                }
                else if (para1 == 150 && para2 == 240 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 3;
                }
                else if (para1 == 150 && para2 == 240 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 4;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 0.5))
                {
                    return 5;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 0.5))
                {
                    return 6;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 0.5))
                {
                    return 7;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 0.75))
                {
                    return 8;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 9;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 0.75))
                {
                    return 10;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 1 && ((para4 / para5) == 1))
                {
                    return 11;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 3 && ((para4 / para5) == 1))
                {
                    return 12;
                }
                else if (para1 == 150 && para2 == 270 && para3 == 5 && ((para4 / para5) == 1))
                {
                    return 13;
                }
                else if (para1 == 150 && para2 == 300 && para3 == 3 && ((para4 / para5) == 0.75))
                {
                    return 14;
                }
            }
            catch
            {
                Console.WriteLine("表中不包含此项");
            }
            return 0;
        }

如果可以把数据存到数据库,读出的数据时直接用数据匹配即可

如果可以把数据存到文本文件里,用文本文件所在的行来当做return值

// 以文本文件举例

150,180,3,0.75  // return 1
150,180,5,0.75  // 因为是第二行,所以return 2
150,240,3,0.75  // 将文本文件读到数组中
150,240,5,0.75  // 一行为一个元素,循环一下
150,270,1,0.5   // 然后切割元素,转数据类型与para参数们比较

// 如果不想用行号,可以直接将返回值也放到文本里
1,150,180,3,0.75  // return 1
2,150,180,5,0.75  // 因为是第二行,所以return 2
3,150,240,3,0.75  // 将文本文件读到数组中
4,150,240,5,0.75  // 一行为一个元素,循环一下
5,150,270,1,0.5   // 然后切割元素,转数据类型与para参数们比较

// 如果是一定要用if,可以换swith,虽然分支一样多,但可以少写不少字符

swith(para1){
    case 150:
        swith(para2){
            case 180:
                swith(para3){
                    .....
                }
                break;
        }
        break;
    case 190:
        break;
    default:
        throw new Exception("");
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632