如何在结构构造函数中设置自动属性支持字段的值?

Dan*_*fer 19 c# constructor struct backing-field

给出这样的结构:

public struct SomeStruct
{
    public SomeStruct(String stringProperty, Int32 intProperty)
    {
        this.StringProperty = stringProperty;
        this.IntProperty = intProperty;
    }

    public String StringProperty { get; set; }
    public Int32 IntProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当然,会生成一个编译器错误,其中包含"this"对象在分配所有字段之前无法使用.

有没有办法为支持字段或属性本身分配值,或者我是否必须使用我自己的显式支持字段以老式方式实现属性?

Mar*_*ell 45

你需要使用"this"构造函数:

public SomeStruct(String stringProperty, Int32 intProperty) : this()
{
    this.StringProperty = stringProperty;
    this.IntProperty = intProperty;
}
Run Code Online (Sandbox Code Playgroud)

这样做会调用默认构造函数,通过这样做,它会初始化所有字段,从而允许this在自定义构造函数中引用.