常量不能转换为'bool'使用c#的switch语句

本文关键字:switch 语句 使用 bool 转换 不能 常量 | 更新日期: 2023-09-27 18:16:22

当我尝试评估CheckBoxListboolSelectedIndex时。我在c#的switch语句中收到一个错误。错误是Constant value '0' cannot be converted to a 'bool'。有没有一种方法可以同时在switch语句中求值?我知道我可以使用if语句,但如果可以的话,我宁愿使用switch语句。

下面是我的代码:
switch ((CBL_PO.SelectedIndex == 0) && (boolIsNotValid == true))
            {
                case 0: case true:
                    //Do Something
                    break;
            }

常量不能转换为'bool'使用c#的switch语句

由于switch中的值只能是truefalse,因此删除case 0

或者,您可以更好地使用if:
if (CBL_PO.SelectedIndex == 0 && boolIsNotValid)
{ }
else
{ }

因为我认为你可能试图对switch中的两个值进行检查:不可能。这是你最好的选择:

switch (CBL_PO.SelectedIndex)
{
    case 0:
    {
        if (boolIsNotValid)
        { }
        else
        { }
        break;
    }
}

switch语句可以看作是if/else语句栈的替代。如果你只做一次比较,那么使用一个简单的If语句;

if (CBL_PO.SelectedIndex == 0 && boolIsNotValid)
{
  // Do something
}

如果您真的想使用switch语句,那么您需要:

switch ((CBL_PO.SelectedIndex == 0) && (boolIsNotValid == true))
    {
        case true:
           //Do Something
           break;
        case false:
           //Do Something else
           break;
    }