c# switch嵌套过多,如何优化

        switch (itemScene)
        {
            case 1:
                {
                    switch (type)
                    {
                        case 1:
                            {
                                switch (itemLevel)
                                {
                                    case 1:
                                        facilityItemList[0][0][0].Add(item);
                                        break;
                                    case 2:
                                        facilityItemList[0][0][1].Add(item);
                                        break;
                                        //TODO

                                }
                            }
                            break;

                    }
                }
                break;
        }

框架类似这样,switch中嵌套switch,每一个switch有七八个case,这样这段代码会过于臃肿,请问有什么办法可以优化这部分结构呢

如果itemScene type itemLevel 的值都是1到n,比facilityItemList数组对应下标多1,可以直接这样

facilityItemList[itemScene-1][type-1][itemLevel-1].Add(item);

其实无论怎么写其实都一样。
我来说几个东西,你自己查资料,查完后,你就可以知道,无论怎么写其实都一样,判定总会存在,只不过是的区别是散着写,还是集中写
1.有限状态机--------------状态表
2.管道分支
3.设计模式状态模式

其实这3个总逻辑上一样。都是先有状态表,状态上下文,然后把你的判定放到下面具体类延后判定,伪代码说明

class 上下文
{
        itemScene
          itemLevel
}

假设我用职责链(或者叫管道把)

管道  管道=new 管道<上下文>
 管道.addHandler<状态处理1>()
管道.addHandler<状态处理2>()


管道.执行(new 上下文(){1,1})

class 状态处理1
{
         if x==1&&y==1
               归我状态1处理
        else
               不归我处理,继续调用下一级管道
         next(上下文)
}

class 状态处理2
{
         if x==1&&y==0 
               归我状态2处理 
        else
               不归我处理,继续调用下一级管道
         next(上下文)
}

你可以看到是的是,判定还是判定,谁写都少不了,只是把判定分拆,交给后面的对象自己去判定

你可以先全部加在一个list里。
然后用linq做筛选。
https://www.cnblogs.com/yplong/p/5416696.html

函数化

善用数组下标

看到的情况发现case的情况比较少,为什么不用if+else?