You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在switch表达式中使用多语句触发CS0201编译错误求助

解决C# switch表达式触发CS0201编译错误

错误原因

你写的switch表达式每个分支返回的是匿名lambda函数,但直接将整个表达式作为独立语句使用——C#规定,只有赋值、调用、增减量、新建对象这类表达式才能单独作为语句,而你当前只是定义了lambda却既没赋值给变量,也没执行它,因此触发CS0201错误。

另外你需要在每个分支写多条语句,甚至用到continue这类控制流,当前的lambda写法完全没必要,反而绕了弯路。

解决方案

方案1:改用switch语句(推荐,适配多语句+控制流场景)

这是多分支多语句场景下的常规写法,每个case里可以自由编写任意逻辑,包括continue这类控制语句:

switch (status)
{
    case "ANY":
        checkboxUtils.TickCheckbox(name, status);
        break;
    case "true":
        if (!(bool)ChecksCkeckboxIsChecked(name, status))
            checkboxUtils.TickCheckbox(name, status);
        break;
    case "false":
        if ((bool)ChecksCkeckboxIsChecked(name, status))
            checkboxUtils.TickCheckbox(name, status);
        break;
    default:
        DriverContext.Driver.Wait(1);
        checkboxUtils.TickCheckbox(name, status);
        DriverContext.Driver.Wait(2);

        if (!(bool)ChecksCkeckboxIsChecked(name, status))
        {
            testUtilsSteps.ThenUserRefreshesThePage();
            continue; // 确保此代码处于循环内部,continue才能生效
        }
        break;
}

方案2:调整switch表达式写法(仅适合无控制流的场景)

如果一定要用switch表达式,需要将表达式结果赋值给变量(用_接收表示忽略返回值),同时去掉lambda,改用C# 9+支持的语句块表达式。注意:switch表达式中不能使用continue这类控制流语句,所以default分支的continue需要调整逻辑:

_ = status switch
{
    "ANY" =>
    {
        checkboxUtils.TickCheckbox(name, status);
        return null; // 语句块需要返回一个值,这里用null占位
    },
    "true" =>
    {
        if (!(bool)ChecksCkeckboxIsChecked(name, status))
            checkboxUtils.TickCheckbox(name, status);
        return null;
    },
    "false" =>
    {
        if ((bool)ChecksCkeckboxIsChecked(name, status))
            checkboxUtils.TickCheckbox(name, status);
        return null;
    },
    _ =>
    {
        DriverContext.Driver.Wait(1);
        checkboxUtils.TickCheckbox(name, status);
        DriverContext.Driver.Wait(2);

        if (!(bool)ChecksCkeckboxIsChecked(name, status))
        {
            testUtilsSteps.ThenUserRefreshesThePage();
            // 此处不能用continue,若需要循环控制请改用switch语句
        }
        return null;
    }
};

内容的提问来源于stack exchange,提问作者user10829672

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:24:59