为什么我的静态类的构造函数似乎从未被调用过
本文关键字:调用 我的 静态类 构造函数 为什么 | 更新日期: 2023-09-27 18:33:10
我正在用C#编写一个控制台应用程序。当应用程序运行时,我需要它在执行任何工作之前检查一些事情,例如某些设置和目录是否存在。我有一个静态类存储在Logging.cs
中,我已经将检查放在该类的构造函数中,但它似乎从未被调用过。
这是一个非常基本的例子:
程序.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
}
}
日志记录.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
调用它,但我想了解我在这里做错了什么。也许答案是创建方法并调用它,但我想先了解为什么上面的例子是错误的。
静态构造函数在第一次引用类时被调用,例如,通过调用其任何成员、创建其实例或在其上调用方法。
因此,您必须编写如下内容:
private static void Main(string[] args)
{
Logging.DoSomething();
Console.WriteLine("Started application");
Console.ReadKey(); // Stops the application exiting so I can read the output
}
从 MSDN:
它 [静态构造函数] 在创建第一个实例之前自动调用,或者任何 引用静态成员。