Что означает условие while (reader.Peek ()! = -1)? - PullRequest
1 голос
/ 23 февраля 2020

С помощью учебника я пишу WebServer на C#, чтобы углубить мои знания в 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);
    }   

Что делает "! = 1" в "while (reader.Peek ()! = -1)" означает?

1 Ответ

1 голос
/ 23 февраля 2020

reader.Peek() сообщает вам, какой следующий символ в потоке не читается (т. Е. Он остался в потоке)

Когда больше нет символов, он возвращает -1. Таким образом, вы узнаете, что больше ничего не придет.

Кроме того, поскольку вы читаете поток символов, -1 не является допустимым символом, поэтому вы можете четко определить условие окончания потока, поскольку его нет в допустимый диапазон для символов (от 0 до 65535, включая границы).

!= - это оператор , не равный в c#, поэтому строка reader.Peek() != -1 означает

получить следующий символ, не удаляя его из потока, и сравнить его с -1 (что означает EndOfStream). Если они отличаются, то результат сравнения будет true, в противном случае false.

Для получения дополнительной информации о методе peek см. Просмотр MSDN , а для операторов, см. Операторы в MSDN .

...