C# ';这';对象的所有字段都指定给之前,无法使用该对象

C# ';这';对象的所有字段都指定给之前,无法使用该对象,c#,constructor,properties,getter-setter,C#,Constructor,Properties,Getter Setter,在构造函数中,天出现问题: 在将“this”对象的所有字段指定给之前,不能使用该对象 但在相同的情况下,月在构造函数中也有效。为什么? struct Date { private byte day; public byte Day { get { return day; } set { if (value > 0 && value < 32) day =

在构造函数中,天出现问题:

在将“this”对象的所有字段指定给之前,不能使用该对象

但在相同的情况下,在构造函数中也有效。为什么?

struct Date
{
    private byte day;

    public byte Day
    {
        get { return day; }
        set {
            if (value > 0 && value < 32)
                day = value;
            else
                day = 0;
        }
    }

    private byte month;

    public byte Month
    {
        get { return month; }
        set
        {
            if (value > 0 && value < 13)
                month = value;
            else
                month = 0;
        }
    }

    public Date(byte day, byte month)
    {
        Day = day;
        Month = month;
    }
}
结构日期 { 私人字节日; 公众字节日 { 获取{返回日;} 设置{ 如果(值>0&&值<32) 天=价值; 其他的 日=0; } } 专用字节月; 公共字节月 { 获取{返回月份;} 设置 { 如果(值>0&&值<13) 月份=价值; 其他的 月份=0; } } 公开日期(字节天,字节月) { 天=天; 月=月; } }
如果没有,编译器在出现第一个错误后刚刚停止。如果您注释掉
Day=Day
,您将在
Month=Month
上看到相同的错误

(使用dotnetfiddle/.net4.7.2进行测试,我想其他编译器可能会有所不同。)

谢谢您的帮助。 我找到了解决办法。 我试图将日期的struct更改为class。成功了

class Date
{


}
this.day=天;本月=月。您正在设置属性,而不是备份字段。该错误适用于
Day=Day(在初始化结构字段之前),不允许使用
。不允许,请尝试删除导致错误的行。