当前位置:编程学习 > C#/ASP.NET >>

c# 关于System.Console.Read();为什么失效

控制台:
 int a;
 a = System.Console.Read();
 System.Console.Write(a);
 System.Console.Read();
运行时界面会一闪消失,好像后一句System.Console.Read();不起作用

string a;
a = System.Console.ReadLine();
System.Console.Write(a);
System.Console.Read();
界面就会停止;
求解释; --------------------编程问答-------------------- string a;
1、a = System.Console.ReadLine();
2、System.Console.Write(a);
3、System.Console.Read();

关键在于第 1 句,ReadLine会把输入流中的所有字符全部读取掉。
然后调用了Console.Write打印。
执行第三句代码的时候Read()输入流中是空的就需要等待了。

如果把第一句换成Console.Read()的话,只会从输入流中读取一个字符。
比如我们输入“a”后按回车,其实输入流中有a回车符(十六进制 0x000d)换行符(十六进制 0x000a)
但是这里的Read()方法只读取里一个字符“a”,还有个回车和换行在输入流中呢。
第二句代码打印。
执行第三句代码的时候又从输入流中读取一个字符,发现里面还有个回车,它就直接读取了。
所以程序就直接跑了。
就算第一句的时候直接按回车,后面也还有个换行符 --------------------编程问答--------------------

            int a;
            a = System.Console.Read();
            System.Console.Write(a);
            int b = System.Console.Read();
            Console.WriteLine(b);

比如把代码改成这样。第一次要求输入的时候,我们输入:“ab”两个字母。
那么最终打印出来的肯定是:9798
第一句a和b的ASCII码 --------------------编程问答-------------------- a = System.Console.Read();
=>
a = int.Parse(System.Console.ReadLine());

否则读取的只是ascii。 --------------------编程问答-------------------- 学习了,原来读取的是ASCII
另外如果楼主想用第一种的话,修改最后一句

int a;
 a = System.Console.Read();
 System.Console.Write(a);
 System.Console.ReadKey();//改成这样屏幕就暂留了
--------------------编程问答--------------------
引用 1 楼  的回复:
string a;
1、a = System.Console.ReadLine();
2、System.Console.Write(a);
3、System.Console.Read();

关键在于第 1 句,ReadLine会把输入流中的所有字符全部读取掉。
然后调用了Console.Write打印。
执行第三句代码的时候Read()输入流中是空的就需要等待了。

如果把第……


说的很详细。
--------------------编程问答-------------------- 很好理解,尤其是对于初学者
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,