无法使用 switch 语句将类型“bool”隐式转换为“int”

Ind*_*ive 1 c# numbers

我对 C# 很陌生,我正在尝试制作一个简单的猜数字游戏,基本上用户输入他们的猜测,如果猜测高于数字,系统将显示它更高或更低。

这是代码:

using System.Diagnostics.Tracing;

Random random = new Random();   

int num = random.Next(0,101);

Console.WriteLine("This is a number guessing game between 1 - 100 ! ");
Console.WriteLine("Enter your guess : ");
int respond = Convert.ToInt32(Console.ReadLine());



switch (respond) {

    case respond > num: Console.WriteLine("");
        break;

    case respond < num: Console.WriteLine("");
        break;
    case respond == num  : Console.WriteLine("You won !");
        break;


}




Console.WriteLine("You won !");
Console.WriteLine("It took you " + tries + " tries");



Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

问题出在这部分,即开关:

switch (respond) {

    case respond > num: Console.WriteLine("");
        break;

    case respond < num: Console.WriteLine("");
        break;
    case respond == num  : Console.WriteLine("You won !");
        break;
}
Run Code Online (Sandbox Code Playgroud)

当尝试比较“respond”和“num”时,我总是收到错误,特别是此错误:

无法将类型“bool”隐式转换为“int”

有谁知道如何修理它?

我尝试更改位置和变量响应,与“num”相同,似乎没有任何效果。

小智 5

您遇到的错误是因为您尝试将 switch 语句与计算结果为布尔值 ( respond > num, respond < num) 的条件一起使用,但 switch 语句需要常量整数表达式。

在这种情况下,您应该使用if else语句来比较这些值。喜欢:

using System;

Random random = new Random();
int num = random.Next(0, 101);

Console.WriteLine("This is a number guessing game between 1 - 100!");
Console.WriteLine("Enter your guess: ");
int respond = Convert.ToInt32(Console.ReadLine());

if (respond > num)
{
    Console.WriteLine("");
}
else if (respond < num)
{
    Console.WriteLine("");
}
else
{
    Console.WriteLine("You won!");
}

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)