是否有读取整个控制台的功能?

Is there a function to read the entire console?

我正在用 C# 编写程序,我想让程序执行如下操作:

while (true)
{
    var Key = Console.ReadKey();
    if (Key.Key == ConsoleKey.Backspace)
    {
        Console.SetCursorPosition(0, Console.CursorTop - 1);
        Console.Write(new string(' ', Console.WindowWidth));
    }
    else
    {
        Console.ReadLine();
    }
}

然后做类似的事情:

Console.ReadAllTextInConsole

获取控制台中当前的所有文本 window 并将其放入字符串中。这可能吗?

我在没有删除最后一行的情况下完成了此操作,但它应该可以满足您的需求,试一试:

class Program
{
    static void Main(string[] args)
    {
        var console = new ConsoleV2();

        while (true)
        {
            var input = Console.ReadLine();
            if (input != "print")
            {
                console.WriteLine(input);
            }
            else
            {
                Console.WriteLine(console.GetOutput());
            }
        }
    }
}

public class ConsoleV2
{
    private readonly StringBuilder _stringBuilder;

    public ConsoleV2()
    {
        _stringBuilder = new StringBuilder();
    }

    public void Write(string format, params object[] args)
    {
        _stringBuilder.Append(string.Format(format, args));
        Console.Write(format, args);
    }

    public void WriteLine(string format, params object[] args)
    {
        _stringBuilder.AppendLine(string.Format(format, args));
        Console.WriteLine(format, args);
    }

    public string GetOutput()
    {
        return _stringBuilder.ToString();
    }
}