Подтвердить что ты не робот

Почему Console.Readline() имеет ограничение на длину текста, который он позволяет?

Возможный дубликат:
Console.Readline() max length?

В моя попытка найти очень простое текстовое приложение Я решил, что быстрее написать собственный. Я заметил, однако, что Console.Readline() ограничен количеством текста, которое разрешает на строку 254 символа; Я не могу найти ничего об этом ограничении в документации по методу.

Это ограничение в стеке Windows или проблема с моим кодом? Как я могу его преодолеть? Я мог бы решить прочитать символ по характеру с помощью Console.Readkey(), но не могу ли я тогда проиграть персонажам в стиле несовпадающего текста MS DOS

4b9b3361

Ответ 1

Быстрый просмотр реализации с помощью .NET Reflector дает следующее:

public static Stream OpenStandardInput()
{
    return OpenStandardInput(0x100);
}

public static Stream OpenStandardInput(int bufferSize)
{
  ...
}

256 является значением по умолчанию OpenStandardInput, поэтому я предполагаю его по дизайну. Обратите внимание, что это только для .NET, поскольку у Windows API этот предел отсутствует.

Ответ 2

Это несколько странное ограничение для API консоли. У меня была эта проблема раньше, и я нашел следующие решения:

Console.SetIn(new StreamReader(Console.OpenStandardInput(8192)));

Из следующего сообщения на форуме MSDN:

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/51ad87c5-92a3-4bb3-8385-bf66a48d6953

Смотрите также этот связанный вопрос Кару:

Console.ReadLine() максимальная длина?