关于Console.Read()方法的一些误解!

一些初学者常常会对Console.Read()方法产生一些误解!具体是什么误解呢?我们先看一段代码:
  static void Main(string[] args)
 {
  int i1 = 123;
  Console.WriteLine(d1);
  Console.Read();

  int i2 = 456;
  Console.WriteLine(_i2);

  Console.Read(); //这里并没有阻塞程序的运行
  Console.WriteLine("abc");
  Console.Read();
}
大家常常认为Console.Read()方法可以阻塞程序的运行,实际情况并非如此,第二次调用Read方法并没有阻塞程序的运行,这主要和Read方法的处理方式有关,第一次执行到Read方法的时候,这时会发生阻塞,当你按了Enter,阻塞解除,同时会在输入内容上添加一个终止 序列(Windows下是回车符和换行符)这个时候出入内容只有(/r/n这两个字符),这个Read方法检索的是回车符(/r)。
     然后执行到第二次调用Read方法,这次调用的Read方法检索的是换行符(/n)。注意这已经是最后一个字符了
     第三次调用Read方法,这是输入内容的所有字符已经检索完毕了,所以Read方法会重新使你的程序处于阻塞状态,如果后续还有Read方法的调用,那么又是新的一次轮回,重复我上面提到检索的步骤!

      Read方法的处理方式是:
      第一次调用会阻塞你的程序,直到输入Enter,同时会在输入内容上添加一个终止序列(Windows下是回车符和换行符)
      后续的Read方法调用不会阻塞你的程序,直到Read方法检索完毕了最后一个字符,这时如果要再调用Read方法,程序又会再次处于阻塞状态了,就像第一次调用Read方法一样,但是这又是新的一次轮回了!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值