静态构造函数之间的区别如下:
class GlobalClass
{
public static DataBase dataBase;
static GlobalClass()
{
dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
dataBase.CreateConnection();
}
}
并在全局类中定义静态实例,如下所示:
class GlobalClass
{
public static GlobalClass Globals = new GlobalClass();
public DataBase dataBase;
public GlobalClass()
{
dataBase= new DataBase(@"Data Source=..;...; User ID=... ;Password=...;");
dataBase.CreateConnection();
}
}
每种类型之间有什么区别?哪个更好用?
答案 0 :(得分:3)
在第一种情况下,数据库仅初始化一次,第一次访问GlobalClass
时。
在第二种情况下,数据库在您创建GlobalClass
实例时初始化每次。没有实例 - 没有初始化。两个实例 - 两个初始化(只有最后一个将通过dataBase
字段提供)。
答案 1 :(得分:1)
虽然最初在功能上相似但它们并不相同。
第二个版本是Singleton模式的一个实现,是两者中更灵活的。
最大的优势是,Globals
可分配,因此可以重新分配。一种用法是您拥有GlobalClass
的多个子类型,您可以为给定的上下文分配适当子类型的实例。
您可以在此处详细了解Singleton与static:Difference between static class and singleton pattern?