C# 静态类构造函数
Posted
技术标签:
【中文标题】C# 静态类构造函数【英文标题】:C# static class constructor 【发布时间】:2011-10-07 00:02:31 【问题描述】:有没有办法解决如何为静态类创建构造函数?
我需要在类初始化时加载一些数据,但我只需要一个对象。
【问题讨论】:
【参考方案1】:C#为此目的有一个静态构造函数。
static class YourClass
static YourClass()
// perform initialization here
来自 MSDN:
静态构造函数用于初始化任何静态数据,或 执行只需要执行一次的特定操作。它 在创建第一个实例之前自动调用 静态成员被引用
MSDN link
。
【讨论】:
请注意,YourClass
不一定是 static
。
公平地说,原发帖人确实专门询问了静态类的构造函数。【参考方案2】:
静态构造函数如下所示
static class Foo
static Foo()
// Static initialization code here
第一次使用该类型时只执行一次。所有类都可以有静态构造函数,而不仅仅是静态类。
【讨论】:
实际上“在创建第一个实例或引用任何静态成员之前自动调用它”msdn.microsoft.com/en-us/library/k9x6w0hc.aspx【参考方案3】:是的,一个静态类可以有静态构造函数,这个构造函数的使用就是静态成员的初始化。
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();
【讨论】:
【参考方案4】:Static constructor
只调用创建的类的第一个实例。
像这样:
static class YourClass
static YourClass()
//initialization
【讨论】:
【参考方案5】:我们可以创建静态构造函数
static class StaticParent
StaticParent()
//write your initialization code here
而且总是少参数。
static class StaticParent
static int i =5;
static StaticParent(int i) //Gives error
//write your initialization code here
而且它没有访问修饰符
【讨论】:
【参考方案6】:您可以使用静态构造函数来初始化静态变量。静态构造函数将是您的类的入口点
public class MyClass
static MyClass()
//write your initialization code here
【讨论】:
静态构造函数没有访问修饰符,这将是一个编译错误以上是关于C# 静态类构造函数的主要内容,如果未能解决你的问题,请参考以下文章