检查前置条件然后调用switch语句的最简洁的语法检查是什么?

Eve*_*ien 0 .net c# if-statement switch-statement

将一些前置条件的检查与switch语句结合起来的最简洁的语法是什么?我可以组合if/else和switch语句吗?

if (!IsValid(text))
{
   DoSomeLogging();
}
else
{
   switch (text)
   {
     case "1":
        DoSomething();
        break;
     case "2"
        DoSomethingElse();
        break;
     default:
        break;
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:已删除跳过评论.我不想反驳这个说法.

Jon*_*eet 6

即使我可以,我也不想把它们结合起来.我认为将"验证"和"处理"分开是一个好主意.

作为一个可怕的黑客,你可以做类似的事情:

switch (Validate(text))
{
    case null:
        throw ArgumentException("Invalid text");
    case "1":
       DoSomething();
       break;
    case "2"
       DoSomethingElse();
       break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

... Validate如果文本无效,则返回null.(当然,这假设null不是一个有效的值.)

但那太可怕了.我更愿意看到:

if (!IsValid(text))
{
    throw ArgumentException("Invalid text");
}
// No need for an else, just proceed with the switch from here
Run Code Online (Sandbox Code Playgroud)