If和Else if block仅运行Else if

DDJ*_*DDJ 1 c# if-statement

看起来这整个简单的代码是正确的,但是当我点击开始并输入任何数字(例如4或6)时,唯一的输出是每次"else if"!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            int c = Convert.ToInt32(Console.Read());
            if (c >= 0  && c < 5)
            {
                Console.Write("# is > 0");
            } 
            else if (c >= 5)
            {
                Console.Write("# is > 5");
            }
            Console.ReadKey();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*zKP 5

Console.Read 内容如下:

输入流中的下一个字符,[...]

如果查看ASCII表,您会注意到表示数字的字符具有从48开始的值.您获得的值已经是整数,因此无需转换(请参阅Console.Read文档中的签名).根据Travis J的建议,您可以使用以下代码来获得预期结果:

int c = Convert.ToInt32(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud)

正如您在文档中Console.ReadLine看到的那样- 它返回一个string.

考虑使用调试器,如您的问题中的注释所示,以及阅读文档.