C# 为什么Console.Readline()对允许的文本长度有限制?
可能重复:C# 为什么Console.Readline()对允许的文本长度有限制?,c#,console-application,C#,Console Application,可能重复: 在中找到一个非常简单的文本到语音的应用程序。然而,我注意到,这是有限的,它允许每行文字数量为254个字符;我在方法文档中找不到关于此限制的任何信息 这是Windows堆栈中的限制,还是我的代码有问题?我怎样才能克服它?我可以决定使用逐字符读取,但这样会不会因为MS DOS哑文本粘贴行为而丢失字符?这是控制台API上的一个有点奇怪的限制。我以前遇到过这个问题,并找到了以下解决方案: Console.SetIn(new StreamReader(Console.OpenStandard
在中找到一个非常简单的文本到语音的应用程序。然而,我注意到,这是有限的,它允许每行文字数量为254个字符;我在方法文档中找不到关于此限制的任何信息
这是Windows堆栈中的限制,还是我的代码有问题?我怎样才能克服它?我可以决定使用逐字符读取,但这样会不会因为MS DOS哑文本粘贴行为而丢失字符?这是控制台API上的一个有点奇怪的限制。我以前遇到过这个问题,并找到了以下解决方案:
Console.SetIn(new StreamReader(Console.OpenStandardInput(8192)));
从以下MSDN论坛帖子:
另请参见此相关StackOverflow问题:
快速浏览一下.NET Reflector的实现,您会发现:
public static Stream OpenStandardInput()
{
return OpenStandardInput(0x100);
}
public static Stream OpenStandardInput(int bufferSize)
{
...
}
256是OpenStandardInput的默认值,所以我想这是出于设计。注意:这仅适用于.NET,因为Windows API没有此限制。请注意,我知道254必须来自何处,即256字节,减去新行和提要返回。但是,我不知道256是从哪里来的。对我来说,我需要以下内容:Console.SetIn(新的StreamReader(Console.OpenStandardInput(8192),Console.inpunecoding,false,8192));