C# while(reader.Peek()!=-1)条件意味着什么?

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) {

在教程的帮助下,我正在用C语言编写一个Web服务器,以进一步加深我对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。这样你就知道不会再有什么了

此外,由于您正在读取字符流,-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()这也是更惯用的。