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”
是否有效。是的,这是显而易见的解决方案,也是一个好的解决方案。但我想不用不同的案例来做。