我正在尝试手动模拟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()时,它会在控制台窗口中显示文本。
答案 0 :(得分:2)
这取决于你想要的深度。 Console.WriteLine()在Console.Out内部调用WriteLine。 Console.Out是TextWriter,提供WriteLine实现。您可以通过直接将字节写入流来实现自己的WriteLine。
如果您想更深入,例如直接写入控制台缓冲区,请注意控制台的Out,In和Error属性都是可重定向的,忽略它们可能会导致问题,例如无法重定向输入并在命令行上使用管道输出。
答案 1 :(得分:0)
我猜你想在相当低的水平上做这件事。我已经使用ReadConsoleOutput
和WriteConsoleOutput
以Console.WriteLine
不允许我的方式直接读取和编写控制台的显示(这些非常适合复古的2D控制台游戏,我原来的意图)
PInvoke链接:ReadConsoleOutput | WriteConsoleOutput
您可能不需要ReadConsoleOutput
,但对于谷歌此页面的人来说,这些方法是相辅相成的。
如果您想从键盘上阅读,我相信您可以使用ReadConsoleInput
,但我实际上并没有尝试过。关于那个建议的小粒盐。