【发布时间】:2020-02-23 13:14:45
【问题描述】:
在教程的帮助下,我用 C# 编写了一个 WebServer,以进一步加深我的 C# 知识
这是代码和我的问题:
private void HandleClient(TcpClient client)
{
StreamReader reader = new StreamReader(client.GetStream());
String msg = "";
while (reader.Peek() != -1)
{
msg += reader.ReadLine() + "\n";
}
Console.WriteLine("Request: \n" + msg);
}
“while (reader.Peek() != -1)”中的“!=1”是什么意思?
【问题讨论】:
-
reader.Peek()返回流中下一个字符的代码点值,如果没有更多字符,则返回 -1,也就是流的结尾。所以基本上这个只是说“虽然还有更多要阅读”。您还可以检查reader.ReadLine()的结果,在这种情况下将返回null。更典型的循环是:string line; while ((line = reader.ReadLine()) != null) { ... } -
Peek如果没有要读取的字符,则返回 -1 -
如果你真的想增加你的 C# 知识,你真的应该开始搜索文档。这一切都在那里docs.microsoft.com/en-us/dotnet/api/…我说这不是为了嘲笑你,而是因为学习如何搜索未知信息是在这个领域学习的基本步骤之一
-
整个 while 语句可以简化为
var msg = reader.ReadToEnd();,这也更加地道。