Почему Console.Readline() имеет ограничение на длину текста, который он позволяет?
Возможный дубликат:
Console.Readline() max length?
В моя попытка найти очень простое текстовое приложение Я решил, что быстрее написать собственный. Я заметил, однако, что Console.Readline()
ограничен количеством текста, которое разрешает на строку 254 символа; Я не могу найти ничего об этом ограничении в документации по методу.
Это ограничение в стеке Windows или проблема с моим кодом? Как я могу его преодолеть? Я мог бы решить прочитать символ по характеру с помощью Console.Readkey()
, но не могу ли я тогда проиграть персонажам в стиле несовпадающего текста MS DOS
Ответы
Ответ 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() максимальная длина?