Console.Read()和Console.ReadLine()有什么区别?

38

我刚接触这个领域,很困惑: Console.Read()Console.ReadLine() 有什么真正的区别呢?


快速查看在线的MSDN就可以得到答案:一行被定义为由字符序列组成,后跟一个回车符(十六进制0x000d),一个换行符(十六进制0x000a),或者Environment.NewLine属性的值。返回的字符串不包含终止字符。 - Mitch Wheat
12个回答

43

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

在控制台应用程序中,标准输入是指从应用程序控制台界面中用户键入的单词或语句。您可以尝试通过 Visual Studio 创建应用程序并自行查看。


18

这些是system.console的方法

  • ReadKey()(返回一个字符):从标准输入流或命令行读取单个字符。通常用于在控制台中为用户提供选项,例如选择A、B或C。另一个显著的例子是按Y或n继续
  • ReadLine()(返回一个字符串):或Console.ReadLine()从标准输入流或命令行读取单行数据。例如,它可以用于要求用户输入其姓名或年龄。它会一直读取所有字符直到我们按下enter键。
  • Read()(返回一个整数):或Console.Read()从标准输入流读取单个字符。类似于ReadKey,不同之处在于它返回一个整数。它返回输入流中的下一个字符,如果没有更多字符可读,则返回(-1)。

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

这些方法在MSDN文档中有明确的描述,上面包含了链接。


1
可能已经描述得很清楚了,但是 ReadKey 不会返回一个字符 - 它会返回一个 ConsoleKeyInfo 实例,您需要从中提取 .Key 属性(因为它还包括元数据,例如是否按住了 Shift 键)。 - Jonny Rathbone

9

Console.Read() 仅读取单个字符,而 Console.ReadLine()会读取从光标当前位置到行尾的所有字符。


5

MSDN在这个问题上非常清楚。


4
基本区别在于:
int i = Console.Read();
Console.WriteLine(i);

将上述代码粘贴并输入“c”,输出将为99。 这是因为Console.Read返回一个int值,但该值将是其ASCII值。

另一方面...

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

它按照输入流中给定的字符串给出相同的字符串。

字符集很可能不是ASCII。在任何MS操作系统(包括MS-DOS)中,控制台中很少使用ASCII。这是用户的偏好,而ASCII不是默认设置。Console.Read的行为取决于Console.InputEncoding。 - Tom Blodget

2

Console.Read()基本上是读取一个字符,因此如果您在控制台上按下一个键,则控制台将关闭,而Console.ReadLine()将读取整个字符串。


5
那Console.ReadKey()呢? - Doro

2

Console.Read() 读取单个按键,而 Console.ReadLine() 则等待 Enter 键。


1

Console.Read()

它只接受用户输入的单个字符并返回其ASCII代码。 数据类型应为int,因为它返回ASCII的整数值。 例如 -> int value = Console.Read();

Console.ReadLine()

  • 它从用户输入中读取所有字符。(并在按下回车键时结束)。
  • 它返回一个字符串,因此数据类型应为String。
  • 例如 -> string value = Console.ReadLine();

Console.ReadKey()

  • 它读取用户按下的键并返回其名称。在输入之前不需要按回车键。
  • 它是一个控制台数据类型,名为ConsoleKeyInfo。
  • 例如 -> ConsoleKeyInfo key = Console.ReadKey();

0

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

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

总结:

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

'Read()'从输入流中读取第一个字符并返回相应的ASCII值。 'ReadKey()'从输入流中读取字符,并返回包含信息的结构体ConsoleKeyInfo,例如按下了哪个键以及在输入时是否按下了任何ALT,Shift,Ctrl。 'ReadLine()'将输入控制台中输入的字符串作为字符串返回。 - Sunil Kumar

0

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() 用于按 Enter 键退出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接