C#控制台输入(Read()、ReadKey()和ReadLine())
Console.Read()、Console.ReadKey() 和 Console.ReadLine() 这 3 个方法都属于 System 命名空间,目的是执行输入,我们可以读取输入的内容。
3 个方法各自的意义如下:
【实例】读取字符,然后输出此字符的十六进制和十进制码值。
可以用 Console.Read() 再次读取做验证,如果不想要使用回车符和换行符可以用 Console.ReadLine() 读取或清除:
【实例】单击任意键,程序可以继续执行。
【实例】输入字符串。
3 个方法各自的意义如下:
- Console.Read():读取屏幕输入的第 1 个字符,按 Enter 此读取可以结束。
- Console.ReadKey():这个方法常被用在告知用户按任意键,让程序继续。
- Console.ReadLine():用字符串方式读取整行输入。
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}");执行结果为:
请输入毕业学校 : 清华大学
你毕业的学校是 清华大学