C# 检查多case语句中的case

C# 检查多case语句中的case,c#,switch-statement,case,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

考虑下面的案例陈述

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 'B':
Case 'C':
     // Can I check here
     // if (case == 'B')
     //      i = 5;
     // if (case == 'C')
     //      i = 10;
     // Rest of the logic

我尝试了以下方法,没有任何问题:

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”,我建议您编写两个单独的案例。

将您的
//逻辑的其余部分放入新方法中,并为更整洁的代码编写单独的测试案例:

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;
    }
}

如果(variable=='C')…您可能应该将公共逻辑移动到一个方法中,为什么不编写两个单独的案例?您必须再次使用
switch()
中使用的表达式值进行比较逻辑。然后,您可以使用
开关大小写
if else
,或者三元运算符。我假设
a
是一个非常复杂的表达式,他们不想重复,也不想放在单独的变量中,但既然这已经被接受,我肯定是错的。
char a='C'。我只是想看看案例是“B”还是“C”。条件
if(a=='B')
实现了这一点。因此,这是公认的答案。谢谢你的帮助!我不小心在我的答案中添加了
char a='C'
,因为我用它来测试
“case ifs”
是否有效。是的,这是显而易见的解决方案,也是一个好的解决方案。但我想不用不同的案例来做。