如何正确使用c#中的switch case块?

时间:2012-07-13 09:24:43

标签: c# switch-statement

我在c#中有一个switch case语句,这里我作为私有常量的所有情况,这里有任何不好的编程习惯,或者我需要在这里使用枚举和case case中的枚举器。只有三个常量我在这里显示,我有十个常数和十个案例块

private const String FEASIBLESIZE = "Total FEASIBLESIZE";
private const String AVAILABLESIZE = "Total AVAILABLESIZE";
private const String EXCESSSIZE = "Total EXCESSSIZE";
                          .
                          . 
switch (value.ToString())
{
    case FEASIBLESIZE:
        Level.Add(TEAMSIZE, test.ToString());
        break;

    case AVAILABLESIZE:
        Level.Add(BROADSIZE, test.ToString());                                
        break;

    case EXCESSSIZE:
        Level.Add(NARROWSIZE, test.ToString());
        break;
         .
         .
         .

5 个答案:

答案 0 :(得分:5)

除了糟糕的格式外,它看起来大致还可以。当然,如果不了解您的代码,这有点难以辨别。 Darin是正确的,因为你没有遵守默认的命名约定(在C#中所有的大写都是禁止的)。

但是我看到更糟糕的是,如果有任何安慰的话。

答案 1 :(得分:4)

您正在做的事情看起来像是可以使用Dictionary<string,string>从一种尺寸类型到另一种尺寸类型的映射来替换。

var sizeMap = new Dictionary<string,string>();

sizeMap.Add(FEASIBLESIZE, TEAMSIZE);
sizeMap.Add(AVAILABLESIZE, BROADSIZE);
sizeMap.Add(EXCESSSIZE, NARROWSIZE);

而不是开关:

Level.Add(sizeMap[value.ToString()], test.ToString());

答案 2 :(得分:3)

请尝试用花括号来表示这种情况,这只是个人风格,但在代码行增长时也会有所帮助,并且也总是使用默认值:

case FEASIBLESIZE:
{
  Level.Add(TEAMSIZE, test.ToString());
  break;
}
default:
///...
break;

答案 3 :(得分:1)

糟糕的编程实践:

private const String FEASIBLESIZE = "Total FEASIBLESIZE";

良好的编程实践:

private const String FEASIBLE_SIZE = "Total FEASIBLESIZE";

更好的编程实践:

private const String FeasibleSize = "Total FEASIBLESIZE";

答案 4 :(得分:1)

你的常数似乎是Enum的候选者,我会选择Enum而不是const ....