0

我一直很难弄清楚如何在动作后触发子代码块。如:

       case "---":
         if (ranNum == 4)
         (First Action (Open File Path or Play Music))
                {
                  switch()
                   {
                    case: "...":
                      if (ranNum > 4)
                             (Second Action 1)
                      if (ranNum < 1)
                             (Second Action 2)
                    break;
                    case: "///":
                      if (ranNum > 4)
                             (Third Action 1)
                      if (ranNum < 1)
                             (Third Action 2) 
                    break;
                   }    

                }
       break;

我们这里的困难是一旦(First Action(打开文件路径或播放音乐))被激活,代码就会跳到底部break;。它完全忽略了两种可能的嵌套情况。我对 C# 还很陌生,所以这个问题已经让我发疯了好几个星期。有谁知道如何使代码在(第一个操作(打开文件路径或播放音乐))之后转到嵌套案例选项?是的(First Action)确实打开了一种文件路径。

4

1 回答 1

1

不要将其视为“嵌套案例”。编译器并不真正关心它是嵌套的。它将执行那里的任何代码。switch结构通常如下所示:

switch (someValue)
{
    case "value1":
        // some block of code
        break;
    case "value2":
        // another block of code
        break;
}

发生的任何事情都与它本身// some block of code无关switch。但是,如果这种嵌套开始使代码难以阅读/理解/支持,那么稍微重构一下就可以清理很多。也许// some block of code应该只是调用一个单独的方法:

switch (someValue)
{
    case "value1":
        SomeMethod();
        break;
    case "value2":
        AnotherMethod();
        break;
}

这里的想法是:

  1. 减少过多的缩进,使代码更具可读性
  2. 提取抽象层次,使逻辑更清晰
  3. 将任何给定方法所做的事情减少到一项。也就是说,SomeMethod做一件事,AnotherMethod做一件事,包含此switch语句的方法做一件事(其中一件事恰好是确定接下来要做什么)。
于 2013-09-17T17:48:29.567 回答