4

静态构造函数有什么区别如下:

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();
    }
}

每种类型之间有什么区别?哪个更好用?

4

2 回答 2

3

在第一种情况下,数据库仅在第一次访问时初始化一次GlobalClass

在第二种情况下,每次创建GlobalClass实例时都会初始化数据库。没有实例 - 没有初始化。两个实例 - 两个初始化(只有最后一个可通过dataBase字段获得)。

于 2013-07-04T13:21:44.453 回答
1

虽然最初在功能上相似,但它们并不相同。

第二个版本是单例模式的实现,是两者中更灵活的一个。

最大的优点是由于Globals是可分配的,因此可以重新分配。一种用途是您有多个 的子类型GlobalClass,您可以为给定的上下文分配适当子类型的实例。

您可以在此处阅读有关单例与静态的更多信息:静态类和单例模式之间的区别?

于 2013-07-04T13:56:09.197 回答