C#内联方式初始化字段

“内联”这个词比较抽象,其实实际表现如下

public class ClassA
{
    private int v1 = 10;// 内联初始化字段
}

这个写法其实经常会见到,它实际等价于

public class ClassA
{
    private int v1;

    public ClassA()
    {
        v1 = 10;
    }
}

内联方式实际上是一种简化写法,用内联方式初始化的字段实际上在编译的时候依旧会在构造函数中进行初始化。但值得注意的是,每个构造函数都会加入这么一段初始化代码。如果构造函数很多,内联的写法也很多时,会导致编译生成的IL代码也会增多。

顺带一提,这样在C#中是不允许的

public struct StructA
{
    private int v1 = 10;
}

因为结构体不准有无参数的构造函数

Tags: