UYOU
				到目前为止,我们有三种竞争方案可供选择:Console.Write("\r{0}   ", value);                      // Option 1: carriage returnConsole.Write("\b\b\b\b\b{0}", value);                 // Option 2: backspace{                                                      // Option 3 in two parts:    Console.SetCursorPosition(0, Console.CursorTop);   // - Move cursor    Console.Write(value);                              // - Rewrite}我总是使用Console.CursorLeft = 0,第三种选择的变种,所以我决定做一些测试。这是我使用的代码:public static void CursorTest(){
    int testsize = 1000000;
    Console.WriteLine("Testing cursor position");
    Stopwatch sw = new Stopwatch();
    sw.Start();
    for (int i = 0; i < testsize; i++)
    {
        Console.Write("\rCounting: {0}     ", i);
    }
    sw.Stop();
    Console.WriteLine("\nTime using \\r: {0}", sw.ElapsedMilliseconds);
    sw.Reset();
    sw.Start();
    int top = Console.CursorTop;
    for (int i = 0; i < testsize; i++)
    {
        Console.SetCursorPosition(0, top);        
        Console.Write("Counting: {0}     ", i);
    }
    sw.Stop();
    Console.WriteLine("\nTime using CursorLeft: {0}", sw.ElapsedMilliseconds);
    sw.Reset();
    sw.Start();
    Console.Write("Counting:          ");
    for (int i = 0; i < testsize; i++)
    {        
        Console.Write("\b\b\b\b\b\b\b\b{0,8}", i);
    }
    sw.Stop();
    Console.WriteLine("\nTime using \\b: {0}", sw.ElapsedMilliseconds);}在我的机器上,我得到以下结果:退格:25.0秒回车:28.7秒SetCursorPosition:49.7秒此外,SetCursorPosition引起了明显的闪烁,我没有观察到任何一种替代方案。因此,道德是尽可能使用退格或回车,并感谢教我一个更快的方法来做到这一点,所以!更新:在评论中,Joel建议SetCursorPosition相对于移动的距离是恒定的,而其他方法是线性的。进一步的测试证实了这种情况,然而恒定的时间和缓慢仍然很慢。在我的测试中,将一长串退格写入控制台比SetCursorPosition更快,直到大约60个字符。因此,退格会更快地替换短于60个字符(或左右)的部分行,并且它不会闪烁,所以我将支持我最初认可的\ b over \ r \ n和SetCursorPosition。