Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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# 为什么';t CTRL-D以单声道发送EOF?_C#_Mono_Eof - Fatal编程技术网

C# 为什么';t CTRL-D以单声道发送EOF?

C# 为什么';t CTRL-D以单声道发送EOF?,c#,mono,eof,C#,Mono,Eof,以下面的C#文件为例,这是对我的问题最简单的可能的再现: using System; using System.IO; public static class Test { public static void Main(string[] args) { string line; while ((line = Console.In.ReadLine()) != null) { Console.Out.Wri

以下面的C#文件为例,这是对我的问题最简单的可能的再现:

using System;
using System.IO;

public static class Test
{
    public static void Main(string[] args)
    {
        string line;
        while ((line = Console.In.ReadLine()) != null)
        {
            Console.Out.WriteLine(line);
        }
    }
}

当我在mono下构建它并在控制台上运行它时,除了不能发送EOF之外,一切都正常。键入CTRL-D只会在命令行中输入一个奇怪的字符。我想我检查EOF的方法是错误的,但是
控制台中的
是一个
文本阅读器
,它没有
EndOfFile
属性。如何修复此问题?

CTRL-D是unix风格的文件结尾。。。由于Mono源于Microsoft领域,它是否可能使用CTRL-Z?(我没有安装Mono,所以我在这里摸黑拍摄)。

哪个版本的Mono?我在2009年03月16日解决了这个问题。。。当我按Ctrl-D时,您的程序按预期运行

更新:很好。我发现2.4.x.y版本没有修正:-(。它将出现在即将发布的2.6版本中…对此感到抱歉。
更新2:mono-2-4在2009-03-13被分支。我错过了3天!

Ctrl-D是EOT,Ctrl-Z是EOF。Ctrl-Z至少在sh和bash中用于停止前台运行的进程…嗯,我从来没有做过区分…每个操作系统上的结束输入只有D(在*nix中)或Z(在DOS和Win中)这个链接似乎认为CTRL D也在*NIX中是EOF:那些是STATY变量名,而不是ASCII。对于处理文本的终端来说,考虑EOT=EOF并把它当作其输入的末尾是有意义的。我在2.4.2.3版中看到这个问题(TaulBoE 10月6日15:35:40MDT 2009)。,最近从mono-project.com下载。是的,我刚刚注意到,当我用系统安装的mono而不是从源代码(主干)构建的mono进行测试时。我使用的是Ubuntu main中的mono。
mono--版本
说1.9.1…比你的修复版本早得多。该死。看起来你也有一个旧的Ubuntu;-)我希望这个bug可以移植到mono-2-4;-)