我有这个代码:
public async Task PickCard()
{
switch (Settings.Co)
{
case CO.Random: Random(); break;
case CO.FirstToLast: ArrangeCardOrder(true); break;
case CO.LastToFirst: ArrangeCardOrder(false); break;
}
await ShowCard();
}
Run Code Online (Sandbox Code Playgroud)
我将要修改Random(),ArrangeCardOrder(true)并ArrangeCardOrder(false)返回一个trueor false。
有没有办法可以从 switch 中获取该信息,如果它们的方法返回true然后调用await ShowCard,然后以 true 退出 PickCard,如果方法返回false,只需以 退出 PickCard false?
目前这只是一个 switch语句。要使用 switch表达式,您需要稍微更改语法 - 以及使用 C# 8。您还需要更改返回类型,以便PickCard可以指示结果。
public async Task<bool> PickCard()
{
// This is a switch *expression* instead of a switch *statement*.
// Switch expressions were introduced in C# 8.
bool result = Settings.Co switch
{
CO.Random => Random(),
CO.FirstToLast => ArrangeCardOrder(true),
CO.LastToFirst => ArrangeCardOrder(false),
// Adjust for whatever you want to do
_ => throw new InvalidOperationException("Invalid setting")
}
if (result)
{
await ShowCard();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)