为什么Console.Readline()对它允许的文本长度有限制?

时间:2011-05-21 13:07:29

标签: c# console-application

  

可能重复:
  Console.Readline() max length?

my attempt中找到一个非常简单的文字转语音应用I decided it was faster to write my own。但是,我注意到Console.Readline()每行允许的文本数量限制为254个字符;我在方法文档中找不到关于此限制的任何内容。

这是Windows堆栈中的限制,还是我的代码有问题?我怎么能克服它?我可以决定用Console.Readkey()逐个字符地阅读,但是我不会冒失去MS DOS哑文字粘贴行为的风险吗?

2 个答案:

答案 0 :(得分:41)

这是对Console API的一个奇怪的限制。之前我遇到过这个问题并找到了以下解决方案:

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

来自以下MSDN论坛帖子:

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

另请参阅此相关StackOverflow问题:

Console.ReadLine() max length?

答案 1 :(得分:6)

使用.NET Reflector快速了解实现情况:

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

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

256是OpenStandardInput的默认值,所以我猜它是设计的。请注意,这仅适用于.NET,因为Windows API没有此限制。