SWITCH CASE语句会变得太大吗?

时间:2012-08-01 15:30:52

标签: c# switch-statement

我有一个继续增长的SELECT / SWITCH语句......我想我应该完成。
但是,目前有19种选择......有什么比这更好的吗?

C#编码

IE:

switch (Request["typeOfRequest"].ToString())
        {
            case "comboFills":
                Response.ContentType = "text";
                Response.Write(getVizData());
                break;
            case "linkFormField":
                Response.ContentType = "text";
                Response.Write(getVizRuleFields());
                break;
            case "getDispositions":

1 个答案:

答案 0 :(得分:2)

Switch语句可能比那些大......但是,最终你可能会遇到效率问题。我不认为19个案件是个问题。我有更大的陈述。通常,switch语句不是处理瓶颈,所以这是你优化的最后一件事。

每个案例都会转换为CPU作为测试和跳转,因此请考虑最坏情况下的操作次数,并确定是否值得大惊小怪,以及实际节省的操作数(最坏情况和平均值)

说,有几个明显的选择。如果您有数字类型且均匀分布,则可以将switch语句拆分为多个开关....

if value < 50
  switch
    ...
  end
else if value < 100
  switch
    ...
  end
else
  ...
end

这当然很难维护,并且可能依赖于使代码变得丑陋的常量值的知识。它真的只是一个垃圾搜索树......

另一种方法是将所有案例放入函数中,并构建一个树或哈希表,将每个值映射到函数处理程序。这样,您始终可以依赖O(logN)搜索时间(或者更好,在哈希表的情况下)。我再说一遍:除非你有充分的理由,否则不要这样做。

希望有助于您提供一些见解。抱歉不是语言特定的。你没有提到一种语言,但我认为它类似于BASIC。

相关问题