更改属性的属性时不使用属性集

问题描述 投票:0回答:1

我有一个超级简单的类Point:

class Point
{
    public Point(double x, double y)
    {
        X = x;
        Y = y;
    }

    public double X;
    public double Y;
}

我在Box类中使用Point:

internal class Box
{
    private Point _upperLHCorner = new Point();
    private Point _lowerRHCorner = new Point();

    internal Box() { }

    public Point UpperLHCorner
    {
        get
        {
            return _upperLHCorner;
        }

        set
        {
            this._upperLHCorner = value;
            _lowerRHCorner.X = _upperLHCorner.X + _width;
            _lowerRHCorner.Y = _upperLHCorner.Y + _height;
        }
    }

    public Point LowerRHCorner
    {
        get
        {
            return _lowerRHCorner;
        }
    }
}

当我在我的代码中设置UpperLHCorner.X时,不会调用UpperLHCorner的setter。而是调用getter。我需要在适当的时候更改LowerRHCorner支持变量x和y。我该怎么做呢?

c# getter-setter
1个回答
1
投票

你不能使用UpperLHCorner的setter来修改_lowerRHCorner的属性。调用唯一的时间设置器是为UpperLHCorner本身分配一个新值。要实现你需要做的事情,你必须使用像SetUpperLHCornerXY参数这样的方法。在该方法中,您可以调整_lowerRHCorner属性。

当然,如果你真的想要,你可以在Point的XY属性上添加事件处理程序。但那将是......喋喋不休。

© www.soinside.com 2019 - 2024. All rights reserved.