我知道静态构造函数用于初始化类的静态成员,但是当我们可以直接通过Class访问和初始化静态成员时,为什么根本需要静态构造函数?
示例-
public class sqlconnection
{
public sqlconnection()
{
}
public void someoperation()
{
}
}
class sqlhelper
{
public static sqlconnection s;
static sqlhelper() //why do we need this as I am able to initialize directly from Main method??
{
s = new sqlconnection();
}
public void insert()
{
s.someoperation();
}
}
class Program
{
public static void Main()
{
sqlconnection s1 = new sqlconnection();
sqlhelper.s = s1; //initilizing s from Main() method
}
}
静态字段按声明顺序初始化。静态构造函数使您可以控制静态字段或属性的初始化顺序。看看documentation]中的备注部分
如果静态字段变量初始值设定项存在于静态构造函数,它们将按文本顺序执行它们出现在紧接之前的类声明中执行静态构造函数。