Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Console.Readline()对允许的文本长度有限制?_C#_Console Application - Fatal编程技术网

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));