C#中的read()
和readline()
之间有什么区别?
也许我们不使用它,但在我的学院里,唯一的区别是一个人有“线”而另一个人没有...... 在c ++中,有“cin”并且它有“endl”来添加行。 有人可以告诉我区别吗?
答案 0 :(得分:8)
您的意思是TextReader.Read
和TextReader.ReadLine
吗?
TextReader.Read
的一个重载将字符读入缓冲区(char[]
),您可以指定要读取的字符数(作为最大值)。另一个人读取一个字符,返回一个int
,如果你已经到达读者的末尾,那将是-1。
TextReader.ReadLine
将整行读作string
,不包括行终止符。
据我所知,endl
更常用于C ++中的cout
:
cout << "Here's a line" << endl;
在.NET中你会使用
writer.WriteLine("Here's a line")
完成同样的事情(适用于TextWriter
;或者使用Console.WriteLine
作为控制台。)
编辑:Console.ReadLine
读取一行文字,而Console.Read
读取单个字符(就像TextWriter.Read
的无参数重载一样)。
Console.ReadLine()
与Console.In.ReadLine()
基本相同,Console.Read()
与Console.In.Read()
基本相同。
编辑:在回答您对其他答案的评论时,您无法做到:
int x = Console.ReadLine();
因为Console.ReadLine()
的返回类型是一个字符串,并且没有string
到int
的转换。你可以做
int x = Console.Read();
因为Console.Read()
返回int
。 (同样,它是Unicode代码点,或者是“数据结束”的-1。)
编辑:如果你想从键盘读取一个整数,即用户键入“15”并且你想要将其作为整数检索,你应该使用类似的东西:
string line = Console.ReadLine();
int value;
if (int.TryParse(line, out value))
{
Console.WriteLine("Successfully parsed value: {0}", value);
}
else
{
Console.WriteLine("Invalid number - try again!");
}
答案 1 :(得分:2)
如果您正在谈论Console.Read和Console.ReadLine,区别在于Read只返回一个字符,而ReadLine返回整个输入行。重要的是要注意,在这两种情况下,API调用都不会返回,直到用户按ENTER键将文本提交给程序。因此,如果您键入“abc”但不按ENTER键,Read和ReadLine都会阻塞,直到您执行此操作。