假设您有一个类似的属性:

Person person1;


public Person Captin{
    get{
        return person1;
    }
    set{
        person1 = value;
    }
}

public void SomeFunction(){
    Captin.name = "Hook"
}


在这种情况下,如果在属性上设置名称,我们知道Hook的新名称将应用于person1的基础值。如果我们的实现有些不同,该怎么办:

public Person Captin{
    get{
        return ReadCaptinFromDisk();
    }
    set{
        WriteCaptinToDisk(value);
    }
}

public void SomeFunction(){
    Captin.name = "Hook"
}


在这种情况下,要正确设置基础值,我们需要调用Captin的设置代码作为Captin.name分配的一部分。

我有兴趣知道参数集代码是否将在字段分配上调用集合或在属性引用上调用方法。尤其是在需要将值传播到磁盘等的这种情况下。

最佳答案

每次您访问Captin属性时,它将从磁盘读取。但是,如果更改属性“名称”,它将不会写入磁盘。仅当您执行类似操作时,它才会写入磁盘

public void SomeFunction() {
   Person p = Captin;
   p.name = "Hook";
   Captin = p;
}

10-08 11:18