c# - 在 C# 中初始化静态变量内联或静态构造函数的区别

标签 c# .net static constructor initialization

我想知道初始化静态成员内联有什么区别:

class Foo
{
    private static Bar bar_ = new Bar();
}

或在静态构造函数中初始化它,如下所示:

class Foo
{
    static Foo()
    {
        bar_ = new Bar();
    }
    private static Bar bar_;
}

最佳答案

如果您的类型中有一个静态构造函数,它会由于 beforefieldinit 而改变类型初始化不再应用标志。

它还会影响初始化顺序 - 变量初始化器都在静态构造函数之前执行。

据我所知,就这些。

关于c# - 在 C# 中初始化静态变量内联或静态构造函数的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/218461/

相关文章:

c# - 如何解决命名不明确的扩展方法?

c# - 为什么这段处理时间戳的代码使用有符号整数?

java - 测试静态方法类必须更改为单例以进行 JUnit 测试

java - 为什么不能在内部类中为静态变量使用初始化程序 block ?

c# - 设置为私有(private)或没有私有(private)关键字的属性。有什么区别?

c# - 奇怪的行为 : Added object to ObservableCollection

c# - TCP 服务器到客户端

.net - 在 .NET Core 上使用 Elastic APM 进行分布式跟踪,非 HTTP

java - 如何在JAVA中获得静态构造函数的功能?

c# - 任务继续被安排到非线程池线程。为什么?