c# - 全局类中静态构造函数和定义静态实例的区别

标签 c# .net static global static-constructor

静态构造函数的区别如下:

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

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

最佳答案

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

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

关于c# - 全局类中静态构造函数和定义静态实例的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471341/

相关文章:

c++ - 两个 C++ 库如何共享一个静态缓冲区?

c# - MVC5 身份和 MVC4 简单成员资格有什么区别?

Java饥饿实现的单例模式

c# Entity Framework 什么时候应该使用新的 dbContext?

java - 如何自动生成变音元音表?

c# - 从不同的线程调试

c# - 使用 StructureMap 自动连接事件处理程序?

python - 跨文件共享的 Python 中的静态变量

c# - 创建大列表<T>

c# - 协程调用崩溃