写一个switch语句,其中一个包含另一个

时间:2015-01-21 11:06:17

标签: c# switch-statement

我想写一个包含三种情况的switch语句:ABC。 但是,C将包含A中涵盖的所有内容,然后将添加一些其他语句。

因此,如果案例A写入文件,则案例C应该写入文件,然后将其写入表中。如何在不重复A中的C代码的情况下实现此行为?

4 个答案:

答案 0 :(得分:6)

将A代码放入方法中,然后从A和C中调用它,然后在break之前添加额外的代码

public void Foo (){}

switch(variable)
{
    case a: Foo(); break;
    case b: otherMethod(); break;
    case c: Foo(); ExtraWork(); break;
}

答案 1 :(得分:2)

另一种选择:C#有一个goto语句可能派上用场[更少代码]

        switch (CASE){
            case A:
              JUMP:
                // Code for A
                break;
            case B:
                // code for B
                break;
            case C:
                // Code for C
                goto JUMP; // Will jump to A 
        }

答案 2 :(得分:1)

您可以创建一个写入文件的方法。

public void Write(){
  //your code here.
}

现在从switch语句案例A和C调用Write()。对于调用Write()后的C语言,您可以执行其他代码。

答案 3 :(得分:1)

在你的情况下,我想到两个选择:

第一个是每个值都有一个不同的大小写,并在两种情况下调用的私有方法中提取代码:

switch (caseSwitch)
{
    case a:
        YourPrivateMethod();
        break;
    case b:
        // What ever you want to do
        break;
    case c:            
        YourPrivateMethod();
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

private void YourPrivateMethod()
{
   //some stuff
}

第二个是a和c的共享案例:

switch (caseSwitch)
    {
        case a:
        case c:       
            // Do what A should

            if(caseSwitch == c)
            {
                // Do what C should
            }
            break;
        case b:
            // What ever you want to do
            break;     
        default:
            Console.WriteLine("Default case");
            break;
    }

问候。