3

我正在尝试手动模拟 Console.Writeline。即:我正在创建一个带有WriteLine 函数的小型控制台类。请参阅下面的代码:

static class Console
{
    public static string WriteLine(string text)
    {
        return text;
    }
}

所以我尝试了:

class Program
{
    static void Main()
    {
        Console.WriteLine("HiMan");
    }
}
static class Console
{
    public static string WriteLine(string text)
    {
        return text;
    }
}

我知道它会返回文本,但是如何在不使用 Write 或 Writeline 方法的情况下将其显示在屏幕上?

我创建这个示例是为了让人们了解类是如何工作的,以及为什么当我使用 WriteLine 或 Write() 时它会在控制台窗口中显示文本。

4

2 回答 2

2

这取决于你想去多深。Console.WriteLine()在内部调用 Console.Out 上的 WriteLine Console.Out 是一个提供 WriteLine 实现的TextWriter 。您始终可以通过直接将字节写入流来实现自己的 WriteLine。

如果您想更深入,例如直接写入控制台缓冲区,请注意 Console 的 Out、In 和 Error 属性都是可重定向的,忽略它们可能会导致问题,例如无法使用重定向输入和输出命令行上的管道。

于 2012-09-12T13:56:54.710 回答
0

我猜你想在相当低的水平上做到这一点。我已经使用ReadConsoleOutputWriteConsoleOutput以我不允许的方式直接读取和写入控制台的显示Console.WriteLine(这些对于复古 2d 控制台游戏来说非常有用,我的初衷)。

PInvoke 链接:ReadConsoleOutput | 写控制台输出

你可能不需要ReadConsoleOutput,但对于那些在谷歌这个页面上搜索的人来说,这些方法有点相辅相成。

如果你想从键盘上阅读,我相信你可以使用ReadConsoleInput,但我还没有真正尝试过。对那个建议有点怀疑。

于 2012-09-12T14:24:20.700 回答