如何使用 C# switch 语句的返回值以 true 或 false 退出任务?

Ala*_*an2 0 c# task

我有这个代码:

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

Jon*_*eet 5

目前这只是一个 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)