CS0029 C#无法将类型'bool'隐式转换为'int'

时间:2018-07-25 21:47:49

标签: c#

我似乎没有找到代码的问题,它说它不能将“ bool”转换为“ int”,但是已经是“ int”了?

public void fUpgrades( int n, double v, double c)
    {
        switch (n)
        {
            case (n < 25): v = v * 1.05; c = c * 1.25; break;
            case ((n >= 25) || (n < 50)): v = v * 1.1; c = c * 1.5; break;
            case ((n >= 50) || (n < 75)): v = v * 1.15; c = c * 1.75; break;
            case (n >= 75): v = v * 1.3; c = c * 1.2; break;
        }
    }

1 个答案:

答案 0 :(得分:1)

您正在打开n,该开关试图将每个case语句((n < 25)等...)与n进行比较。 (n < 25)是布尔值(如果小于25,则为True,否则为false)。您不能将布尔值与整数进行比较(这就是为什么会出现此错误的原因)。您需要将语法转换为if / else语句(并且您的范围逻辑有些混乱):

if (n < 25)      { v = v * 1.05; c = c * 1.25; }
else if (n < 50) { v = v * 1.1;  c = c * 1.5; }
else if (n < 75) { v = v * 1.15; c = c * 1.75; }
else             { v = v * 1.3;  c = c * 1.2; }