首页 > 编程笔记 > C#笔记 阅读:14

C#控制台输入(Read()、ReadKey()和ReadLine())

Console.Read()、Console.ReadKey() 和 Console.ReadLine() 这 3 个方法都属于 System 命名空间,目的是执行输入,我们可以读取输入的内容。

3 个方法各自的意义如下:

C# Console.Read()

Console.Read() 可以读取屏幕输入的第 1 个字符,即使输入多个字符也只读取第 1 个字符,输入完请按 Enter 键,才会执行读取工作,当读取字符时会依 Unicode 码值存储此字符。

【实例】读取字符,然后输出此字符的十六进制和十进制码值。
int x;
Console.Write("请输入字符 : ");
x = Console.Read();
Console.WriteLine($"字符十六进制 :{x:x}");
Console.WriteLine($"字符十进制  :{x}");
执行程序,请输入英文字符,读者也可以输入汉字做测试,结果为:
请输入字符 : Ab
字符十六进制 :41
字符十进制  :65
笔者故意输入Ab,其实只读取到 A 字符。
使用 Console.Read() 需要留意的是,即使只输入一个字符,当我们按 Enter 键执行读取时,Enter 键此动作也会产生回车(carriage return)字符‘\r’(十进制 13 或是十六进制 0xD)和换行(new line)字符‘\n’(十进制 10 或十六进制 0xA),这两个字符会遗留在输入缓冲区。

可以用 Console.Read() 再次读取做验证,如果不想要使用回车符和换行符可以用 Console.ReadLine() 读取或清除:
int x;
Console.Write("请输入字符 : ");
x = Console.Read();
Console.WriteLine($"字符十六进制 :{x:x}");
Console.WriteLine($"字符十进制  :{x}");
x = Console.Read();
Console.WriteLine($"字符十六进制 :{x:x}");
Console.WriteLine($"字符十进制  :{x}");
x = Console.Read();
Console.WriteLine($"字符十六进制 :{x:x}");
执行结果为:
请输入字符 : A
字符十六进制 :41
字符十进制  :65
字符十六进制 :d
字符十进制  :13
字符十六进制 :a
字符十进制  :10
从上述可以看到我们只输入一个字符 A,然后按 Enter 键,但是使用 Console.Read() 可以读取字符 3 次,多了回车字符和换行字符。

C# Console.ReadKey()

Console.ReadKey() 可以读取屏幕输入,常被用在告知用户按任意键,程序可以继续执行。

【实例】单击任意键,程序可以继续执行。
Console.WriteLine("国内顶尖科技大学");
Console.WriteLine("(按任意键可以继续)");
Console.ReadKey();
Console.WriteLine("C语言中文网");
执行结果为:
国内顶尖科技大学
(按任意键可以继续)
C语言中文网

C# Console.ReadLine()

Console.ReadLine()会用字符串读取屏幕整行屏幕输入,可以参考下列语法。
strs = Console.ReadLine(); // 所读取的数据是字符串

【实例】输入字符串。
string school;
Console.Write("请输入毕业学校 : ");
school = Console.ReadLine();
Console.WriteLine($"你毕业的学校是 {school}");
执行结果为:

请输入毕业学校 : 清华大学
你毕业的学校是 清华大学

需留意的是 ReadLine() 读取整行输入,所以如果输入含多个单词的整句,那么直到按 Enter 键,整行都会被读取。

相关文章