【发布时间】:2011-10-07 00:02:31
【问题描述】:
有没有办法解决如何为静态类创建构造函数?
我需要在类初始化时加载一些数据,但我只需要一个对象。
【问题讨论】:
标签: c# class static constructor
有没有办法解决如何为静态类创建构造函数?
我需要在类初始化时加载一些数据,但我只需要一个对象。
【问题讨论】:
标签: c# class static constructor
C#为此目的有一个静态构造函数。
static class YourClass
{
static YourClass()
{
// perform initialization here
}
}
来自 MSDN:
静态构造函数用于初始化任何静态数据,或 执行只需要执行一次的特定操作。它 在创建第一个实例之前自动调用 静态成员被引用
。
【讨论】:
YourClass 不一定是 static。
静态构造函数如下所示
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
}
}
而且总是少参数。
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
}
}
【讨论】: