C#:手动创建console.writeline

时间:2012-09-12 13:51:13

标签: c# class methods

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

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()时,它会在控制台窗口中显示文本。

2 个答案:

答案 0 :(得分:2)

这取决于你想要的深度。 Console.WriteLine()Console.Out内部调用WriteLine。 Console.Out是TextWriter,提供WriteLine实现。您可以通过直接将字节写入流来实现自己的WriteLine。

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

答案 1 :(得分:0)

我猜你想在相当低的水平上做这件事。我已经使用ReadConsoleOutputWriteConsoleOutputConsole.WriteLine不允许我的方式直接读取和编写控制台的显示(这些非常适合复古的2D控制台游戏,我原来的意图)

PInvoke链接:ReadConsoleOutput | WriteConsoleOutput

您可能不需要ReadConsoleOutput,但对于谷歌此页面的人来说,这些方法是相辅相成的。

如果您想从键盘上阅读,我相信您可以使用ReadConsoleInput,但我实际上并没有尝试过。关于那个建议的小粒盐。