Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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.writeline_C#_Class_Methods - Fatal编程技术网

C#:手动创建console.writeline

C#:手动创建console.writeline,c#,class,methods,C#,Class,Methods,我正在尝试模拟控制台。手动写入线。 i、 e:我正在用函数WriteLine创建一个小的控制台类。 请参见下面的我的代码: static class Console { public static string WriteLine(string text) { return text; } } 所以我试着用: class Program { static void Main() { Console.WriteLine("H

我正在尝试模拟控制台。手动写入线。 i、 e:我正在用函数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()时,它会在控制台窗口中显示文本。

这取决于您想要的深度。在内部调用WriteLine。Out是一个提供WriteLine实现的。您可以通过直接将字节写入流来实现自己的WriteLine


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

我猜您希望在相当低的级别上执行此操作。我曾使用
ReadConsoleOutput
WriteConsoleOutput
Console.WriteLine
不允许的方式直接读取和写入控制台的显示(我的初衷是,这对于复古2d控制台游戏非常有用)

PInvoke链接:|

您可能不需要
ReadConsoleOutput
,但对于那些搜索此页面的用户来说,这些方法是相互关联的


如果你想通过键盘阅读,我相信你可以使用
ReadConsoleInput
,但我还没有尝试过。这是一个小小的建议。

如果你想知道
控制台
类是如何工作的,我建议你阅读。你绝对可以使用一些低级的pinvoke,brb和一个答案……正确的答案应该是“类如何工作?”与语言和功能无关。类是一个类,无论是在C#、Java等语言中。继承、封装……调用WriteConsole Win32 api的概念也是如此。那么,您希望您的模拟控制台在不使用console类的情况下写入shell的缓冲区吗?您想让您的控制台写入windows窗体上的文本框(或者在其他情况下使用自定义UI仅显示文本)?是否要从文件中读取输入并将输出写入文件?您是否只想在内存中跟踪控制台的内容(例如在
字符串
stringbuilder
或类似文件中)?