c#静态类构造函数
本文关键字:构造函数 静态类 | 更新日期: 2023-09-27 18:02:23
是否有关于如何为静态类创建构造函数的工作?
我需要在类初始化时加载一些数据,但我需要一个且只有一个对象
c#有一个用于此目的的静态构造函数
static class YourClass
{
static YourClass()
{
// perform initialization here
}
}
From MSDN:
静态构造函数用于初始化任何静态数据,或执行只需要执行一次的特定操作。它在创建第一个实例或任何静态成员被引用
MSDN联系
。
静态构造函数是这样的
static class Foo
{
static Foo()
{
// Static initialization code here
}
}
仅在第一次使用该类型时执行一次。所有类都可以有静态构造函数,而不仅仅是静态类。
可以,静态类可以有静态构造函数,使用这个构造函数就是初始化静态成员。
static class Employee1
{
static int EmpNo;
static Employee1()
{
EmpNo = 10;
// perform initialization here
}
public static void Add()
{
}
public static void Add1()
{
}
}
和静态构造函数只在访问类名Class1
的静态类的任何类型成员时调用一次。假设您正在访问第一个EmployeeName字段,然后这次调用构造函数,之后它将不会被调用,即使您将访问相同的类型成员。
Employee1.EmployeeName = "kumod";
Employee1.Add();
Employee1.Add();
Static constructor
只调用创建的类的第一个实例。
:
static class YourClass
{
static YourClass()
{
//initialization
}
}
可以创建静态构造函数
static class StaticParent
{
StaticParent()
{
//write your initialization code here
}
}
,且总是parameter less
static class StaticParent
{
static int i =5;
static StaticParent(int i) //Gives error
{
//write your initialization code here
}
}
没有访问修饰符
可以使用静态构造函数初始化静态变量。静态构造函数将是类
的入口点。public class MyClass
{
static MyClass()
{
//write your initialization code here
}
}
静态类不能有实例构造函数(与公认的答案不同)。但是,类可以有静态构造函数。
在c# 9中,有ModuleInitializer属性,它比静态构造函数要好得多。以下是来自链接网站的优点:
- 允许库在加载时立即进行一次性初始化,开销最小,用户无需显式调用任何
- 当前静态构造函数方法的一个特别的痛点是,运行时必须对带有静态构造函数的类型的使用情况进行额外的检查,以便决定是否需要运行静态构造函数。这会增加可测量的开销。
- 允许源生成器运行一些全局初始化逻辑,而不需要用户显式调用任何
这些都是非常重要的点,可以在静态类中使用如下属性:
[ModuleInitializer]
public static void Init()
{
// Logic
}