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

bad*_*adp 11 c# console-application

可能重复:
Console.Readline()最大长度?

我试图找到一个非常简单的文本到语音应用程序时,我认为编写自己的文本更快.但是,我注意到,Console.Readline()每行允许的文本数量限制为254个字符; 我在方法文档中找不到有关此限制的任何内容.

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

Col*_*inE 42

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

Console.SetIn(new StreamReader(Console.OpenStandardInput(8192)));
Run Code Online (Sandbox Code Playgroud)

来自以下MSDN论坛帖子:

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

另请参阅此相关的StackOverflow问题:

Console.ReadLine()最大长度?

  • 对我来说,我需要以下内容: Console.SetIn(new StreamReader(Console.OpenStandardInput(8192), Console.InputEncoding, false, 8192)); (2认同)

Sim*_*ier 6

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

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

public static Stream OpenStandardInput(int bufferSize)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

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