C# while(reader.Peek()!=-1)条件意味着什么?
在教程的帮助下,我正在用C语言编写一个Web服务器,以进一步加深我对C语言的了解# 下面是代码和我的问题:C# while(reader.Peek()!=-1)条件意味着什么?,c#,server,backend,C#,Server,Backend,在教程的帮助下,我正在用C语言编写一个Web服务器,以进一步加深我对C语言的了解# 下面是代码和我的问题: private void HandleClient(TcpClient client) { StreamReader reader = new StreamReader(client.GetStream()); String msg = ""; while (reader.Peek() != -1) {
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。这样你就知道不会再有什么了
此外,由于您正在读取字符流,-1不是有效字符,因此您可以清楚地识别流结束条件,因为它不在字符的有效范围内(0到65535,包括边界)
=
不是c#中的等于运算符,因此行reader.Peek()!=-1
表示
在不从流中删除下一个字符的情况下获取下一个字符,并根据-1(即EndOfStream)检查它。如果它们不同,则比较结果为true
否则false
有关
peek
方法的更多信息,请参阅,而有关运算符,请参阅。reader.peek()
返回流中下一个字符的码点值,如果没有了,则返回-1,即流的结尾。所以基本上这一条只是说“虽然还有更多的东西要读”。您还可以检查reader.ReadLine()
的结果,在本例中,它将返回null
。更典型的循环是:字符串行;而((line=reader.ReadLine())!=null){…}
Peek
返回-1如果没有更多的字符可读取如果你真的想增加你的C#知识,你真的应该开始搜索文档。我说这些并不是为了嘲弄你,而是因为学习如何搜索未知信息是学习这个领域的基本步骤之一。整个while语句可以简化为var msg=reader.ReadToEnd()代码>这也是更惯用的。