有没有办法让房产设定其支持价值?

Avi*_*ohn 1 c# properties

我有一个属性,我希望它在设置时设置另一个属性.例如:

    private double Bpm
    {
        set
        {
            <myself> = value;
            _bps = <myself> / 60;
        }
        get
        {
            return <myself>;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我实际做的是以下,因为我找不到另一种方式:

    private double _bpm;
    private double _bps;

    private double Bpm
    {
        set
        {
            _bpm = value;
            _bps = _bpm / 60;
        }
        get
        {
            return _bpm;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我发现它不优雅,有两个私人成员Bpm_bpm.我也可以有一个SetBpm方法,但我想知道这是否可以用属性实现.

Jon*_*eet 10

一个属性实际上只是一对方法 - 如果你使用自动实现的属性,编译器会为你实现它们并创建一个字段.您需要一个字段 - 因为您只有一个实际值,并且有两个视图 - 因此您可以让编译器通过使用自动实现的属性自动为您创建该字段,或者您可以自己声明它.我亲自使用自动实现的属性.然后根据原始属性计算其他属性.您可以将其设为只读属性,也可以将其设为读写.

例如,作为只读版本:

public double BeatsPerSecond { get; set; }
public double BeatsPerMinute { get { return BeatsPerSecond * 60; } }
Run Code Online (Sandbox Code Playgroud)

或者在C#6中:

public double BeatsPerSecond { get; set; }
public double BeatsPerMinute => BeatsPerSecond * 60;
Run Code Online (Sandbox Code Playgroud)

对于读写版本:

public double BeatsPerSecond { get; set; }
public double BeatsPerMinute
{
    get { return BeatsPerSecond * 60; }
    set { BeatsPerSecond = value / 60; }
}
Run Code Online (Sandbox Code Playgroud)

如果BeatsPerMinute您愿意,您可以决定改为"存储",只需更改属性计算.