结构构造函数调用 this()

Struct constructor calls this()

我看到了以下代码片段,想知道以这种方式编写构造函数的目的是什么?

public struct DataPoint{
    public readonly long X;
    public readonly double Y;
    public DataPoint(long x, double y) : this() {
        this.X = x;
        this.Y = y;
    }
}

this()不就是把XY设置为零吗?这不是毫无意义的动作吗,因为之后它们立即设置为 xy

public DataPoint(long x, double y) : this() {

这会调用编译器自动提供的默认构造函数,并将所有字段初始化为默认值。

在这种情况下,您的自定义构造函数无论如何都会分配所有字段,因此没有意义。但是假设您只分配了 X,并没有调用默认构造函数:

public struct DataPoint{
    public readonly long X;
    public readonly double Y;
    public DataPoint(long x) {
        this.X = x;
    }
}

这会产生编译器错误,因为 Y 没有在您的参数化构造函数中赋值,并且因为您已经定义了它,所以默认构造函数对消费者不公开可见。

this() 添加到 初始化列表 确保所有字段都被初始化,即使您不是这样做的人。