在多个案例陈述中检查案例

时间:2016-03-18 07:02:11

标签: c# switch-statement case

考虑以下案例陈述

Case 'A':
     break;
Case 'B':
Case 'C':
     // some logic
     int i = 0;

     // here I need i =5 (if case id 'B')  and i=10 (if case is 'C')

     // Rest of the logic is same
     break;

我知道我可以通过为'B'和'C'编写单独的案例并在单独的函数中编写其余逻辑并在'B'和'C'案例中调用该函数来实现这一点。

但是有什么办法,我只能在Case语句中查看案例......如下

Case 'B':
Case 'C':
     // Can I check here
     // if (case == 'B')
     //      i = 5;
     // if (case == 'C')
     //      i = 10;
     // Rest of the logic

2 个答案:

答案 0 :(得分:2)

我尝试了下面的工作,没有任何问题:

switch (a)
{
    case 'A':
        Console.WriteLine("Es ist ein 'A'.");
        break;
    case 'B':
    case 'C':
        if (a == 'B')
            Console.WriteLine("Es ist ein 'B'.");
        if (a == 'C')
            Console.WriteLine("Es ist ein 'C'.");
        break;
}

但是,如果你只是检查它是否是' B'或者' C',我建议写两个不同的案例。

答案 1 :(得分:2)

将您的//Rest of Logic置于新方法中,并针对更简洁的代码单独执行测试用例:

private void DoSomething(int i)
{
    //Rest of Logic
}

public void SwitchMethod(char input)
{
    int i = 0;
    Switch (input)
    {
        case 'A': 
            break;
        case 'B':
            i = 5;
            DoSomething(i);
            break;
        case 'C':
            i = 10;
            DoSomething(i);
            break;
    }
}