【问题标题】:Difference between Console.Read() and Console.ReadLine()?Console.Read() 和 Console.ReadLine() 的区别?
【发布时间】:2011-07-26 06:05:49
【问题描述】:

我是这个领域的新手,我很困惑:Console.Read()Console.ReadLine() 之间的真正区别是什么?

【问题讨论】:

标签: c# input console inputstream


【解决方案1】:

Console.Read() 只从标准输入读取下一个字符, Console.ReadLine() 从标准输入流中读取下一行字符。

在控制台应用程序的情况下,标准输入是根据用户在应用程序的控制台 UI 中键入的字词输入的。尝试用Visual Studio制作,自己看看。

【讨论】:

    【解决方案2】:

    这些是system.console的方法

    • ReadKey()(返回一个字符):从标准输入流或命令行中只读取一个字符。通常在您在控制台中为用户提供选项以供选择时使用,例如 select A、B 或 C。 另一个突出的例子,按 Y 或 n 继续
    • ReadLine()(返回 string):或 Console.Readline() 从标准输入流或命令行中读取一行。例如,它可以用于要求用户输入他们的姓名或年龄。它会读取所有字符,直到我们按下 enter
    • Read()(返回 int):或 Console.Read() 仅从 标准输入流。与 ReadKey 类似,只是它返回一个 整数。它从输入流中返回下一个字符,如果没有要读取的字符,则返回 (-1)。

    (还有更多 system.console 方法,例如 write() 和 writeline() 用于在命令行中写入,其行为类似于 read() 和 readline() 方法)

    MSDN 文档中的示例清楚地描述了这一点(链接在上面)。

    【讨论】:

    • 可能描述得很清楚,但 ReadKey 不返回一个字符 - 它返回一个 ConsoleKeyInfo 的实例,您需要从中提取 .Key 属性(因为它还包括元数据,例如是否使用 shift 键举行)
    【解决方案3】:

    基本区别是:

    int i = Console.Read();
    Console.WriteLine(i);
    

    粘贴上面的代码并输入'c',输出将是99。 那是 Console.Read 给出 int 值,但该值将是该值的 ASCII 值..

    在另一边..

    string s = Console.ReadLine();
    Console.WriteLine(s);
    

    它给出输入流中给出的字符串。

    【讨论】:

    • 从答案中删除了促销内容。不允许在 Stackoverflow 上宣传任何东西(网站、博客、任何产品或其他),尤其是当它不能解决所提出问题/问题的目的时。
    • 字符集可能不是 ASCII。 ASCII 在任何 MS 操作系统(包括 MS-DOS)的控制台中都没有被大量使用。这是用户偏好,ASCII 不是默认设置。 Console.Read 的行为取决于 Console.InputEncoding。
    【解决方案4】:

    Console.Read()

    • 它只接受来自用户输入的单个字符并返回其 ASCII 码。
    • 数据类型应该是int。因为它以 ASCII 格式返回整数值。
    • ex -> int value = Console.Read();

    Console.ReadLine()

    • 它从用户输入中读取所有字符。 (并在按 Enter 时完成)。
    • 它返回一个字符串,所以数据类型应该是字符串。
    • ex -> 字符串值 = Console.ReadLine();

    Console.ReadKey()

    • 它读取用户按下了哪个键并返回其名称。进入前不需要按回车键。
    • 它是一个结构数据类型,即ConsoleKeyInfo。
    • ex -> ConsoleKeyInfo key = Console.ReadKey();

    【讨论】:

      【解决方案5】:

      Console.Read() 只读取一个字符,而Console.ReadLine() 读取所有字符直到行尾。

      【讨论】:

        【解决方案6】:

        Console.Read() 读取单个键,其中Console.Readline() 等待 Enter 键。

        【讨论】:

          【解决方案7】:

          Console.Read() 基本上读取一个字符,所以如果你在控制台上按下一个键,控制台就会关闭,同时Console.Readline() 会读取整个字符串。

          【讨论】:

          • 那么 Console.ReadKey() 呢?
          【解决方案8】:

          C#中Read()、Readline()和ReadKey()的区别:

          • Read() - 接受字符串值并返回字符串值。
          • Readline() - 接受字符串并返回整数。
          • ReadKey() - 接受字符并返回字符。

          总结:

          1. 这三个方法主要用于Console应用,用于返回不同的值。
          2. 如果我们使用 Read line 或 Read(),我们需要按 Enter 键返回代码。
          3. 如果我们使用 Read key(),我们可以按任意键返回应用程序中的代码。

          【讨论】:

          • 'Read()' 从输入流中读取第一个字符并返回对应字符的 ASCII 值。 'ReadKey()' 从输入流中读取字符并返回包含 'KeyChar'、'Key' 和 'Modifiers' 的结构 ConsoleKeyInfo 以获取诸如按下哪个键以及在输入输入时是否按下了任何 ALT、Shift、Ctrl 等信息或不是。 'ReadLine()' 从输入控制台返回输入的字符串作为字符串
          【解决方案9】:
          Console.Read()
          

          => 只从标准输入中读取一个字符

          Console.ReadLine()
          

          => 从标准输入中读取该行中的所有字符

          【讨论】:

          • 这个答案与其他答案相比有何附加价值?
          【解决方案10】:

          MSDN 在这方面其实很清楚。

          【讨论】:

            【解决方案11】:

            Read()、ReadLine()和Readkey()方法的区别如下:

            Read():这是 Console 类中的静态方法:

            int i = Console.Read();//it always return int value.
            Console.WriteLine(i);
            

            粘贴上面的代码并输入'1',输出将为49。即Console.Read给出int值,但该值将是ASCII值。

            ReadLine():

            string s= Console.ReadLine();//it always return string value.
            Console.WriteLine(s);
            

            它给出输入流中给出的字符串。

            ReadKey():此方法用于保持输出屏幕。当按下任意键时。 Read() 和 ReadLine() 用作退出的回车键。

            【讨论】:

              【解决方案12】:

              Console.Read() 用于从标准输入流中读取下一个字符。 当我们只想读取单个字符时,请使用Console.Read()

              Console.ReadLine() 用于从标准输入流中读取一行字符。 当我们想读取一行字符时使用Console.ReadLine()

              【讨论】:

              • 与其他答案相比,您的答案并没有真正增加任何东西(这些答案都是在 7 个月前的一分钟内写成的,这就是它们如此相似的原因)...
              猜你喜欢
              • 2011-10-13
              • 2013-08-23
              • 2012-08-31
              • 1970-01-01
              • 2018-02-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多