Console.Title c# 当前时间

Console.Title c# current time

我正在用 C# 编写俄罗斯方块程序,我想在控制台的标题中表示剩余时间。

为什么不能编译?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Timers;

using System.Diagnostics;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            var stopwatch = new Stopwatch();
            stopwatch.Start();
            do
            {
                Console.Title("Elapsed time:" +  stopwatch.Elapsed.TotalSeconds);`


            } while (true);
            stopwatch.Stop();

            Console.ReadKey();
        }
    }
}

Error 1 Non-invocable member 'System.Console.Title' cannot be used like a method. C:\Users\Bence\Documents\C#\ConsoleApplication8\ConsoleApplication8\Prog‌​ram.cs 19 25 ConsoleApplication8

嗯,就像错误信息所说的那样,Console.Title is not a method, but a property,所以必须使用:

Console.Title = "Elapsed time:" +  stopwatch.Elapsed.TotalSeconds;

您应该更仔细地阅读编译器输出。另请注意,循环后的代码将永远不会到达(编译器也会告诉您),因此您的循环将永远运行。

一些进一步的说明:

Console.Title = String.Format("Elapsed time: {0:N}", stopwatch.Elapsed.TotalSeconds);

  • 您可能会自己发现它,但是 运行 如此紧凑的循环将消耗 100% CPU 使用率(DrKoch 已经在评论中告诉您了)。
  • 使用控制台进行复杂的图形输出很糟糕。为什么不使用游戏引擎? (甚至 WinForms 会更好)

您处于 while 循环中,而不是 tick 事件。

还有

Console.Title = "Elapsed time:" +  stopwatch.Elapsed.TotalSeconds;