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)
编辑:已删除跳过评论.我不想反驳这个说法.
即使我可以,我也不想把它们结合起来.我认为将"验证"和"处理"分开是一个好主意.
作为一个可怕的黑客,你可以做类似的事情:
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)