Ala*_*an2 1 c# switch-statement
我有将这些代码重构为使用开关的代码,但看起来仍然很笨拙。现在,我正在寻找一种简化方法。
public async Task CheckAvailability()
{
switch (Settings.Mode)
{
case Enums.MO.Learn:
if (await IsLearn())
{
await ShowFirstMessageAsync();
return;
}
break;
case Enums.MO.Practice:
if (await IsPractice())
{
await ShowFirstMessageAsync();
return;
}
break;
case Enums.MO.Quiz:
if (await IsQuiz())
{
await ShowFirstMessageAsync();
return;
}
break;
default:
break;
}
await PickCard();
}
Run Code Online (Sandbox Code Playgroud)
有没有人能想到一种更简单的方法来实现此目的,而无需多次调用来等待ShowFirstMessageAsync?
这是在C#8中使用switch表达式的好机会:
var shouldShowFirstMessage = Settings.Mode switch
{
Enums.MO.Learn => await IsLearn(),
Enums.MO.Practice => await IsPractice(),
Enums.MO.Quiz => await IsQuiz(),
_ => false
}
if (shouldShowFirstMessage) {
await ShowFirstMessageAsync();
} else {
await PickCard();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |