【发布时间】:2016-02-04 14:11:52
【问题描述】:
我正在用 C# 编写控制台应用程序。当应用程序运行时,我需要它在做任何工作之前检查一些事情,例如是否存在某些设置和目录。我有一个存储在Logging.cs 中的静态类,我已经在这个类的构造函数中进行了检查,但它似乎从未被调用过。
这是一个非常基本的例子:
Program.cs
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Started application");
Console.ReadKey(); // Stops the application exiting so I can read the output
}
}
Logging.cs
internal static class Logging
{
static Logging()
{
// The checks are all here, for the demo we'll just use WriteLine
Console.WriteLine("Logging constructor");
}
}
预期的控制台输出:
已启动应用程序
记录构造函数
我知道我可以在 Logging 类中创建一个名为 DoStartupChecks 的静态方法,并从 Program.cs 中的 Main 调用它,但我想了解我在这里做错了什么。也许答案是创建方法并调用它,但我想先了解为什么上面的例子是错误的。
【问题讨论】:
-
你在上课吗?
-
第一次使用类时调用静态构造函数,而不是在加载程序时。所以你的例子确实不会导致构造函数被调用。
-
好吧,这是有道理的。我认为将其设为静态会创建一个实例并因此调用构造函数。这更有意义。谢谢。