首页 文章

使用get set访问器访问属性的属性

提问于
浏览
1

这可能看起来像一个奇怪的问题,但无论如何我要去 .

我有一个名为Sprite的类,它具有“Position”和“Size”等属性 . 当其中一个属性被更改时,我需要触发一个私有方法,该方法使用Draw()方法中使用的新位置/大小来更改矩形 .

所以我想我会使用get set访问器,所以我可以设置私有位置变量然后触发事件 . 像这样:

private Vector3 position;
public Vector3 Position { 
    get { return this.position; } 
    set {
        this.position = value;
        this.SetDrawRectangle();
    }
}

这个工作正常,直到我想使用位置的属性之一,如X,Y或Z.所以,如果我这样做:

sprite.Position.X = 10;

它不起作用,我得到的错误是

错误1无法修改'.Sprite.Position'的返回值,因为它不是变量 .

我必须这样做:

sprite.Position = new Vector3(10, 0, 0);

但是在某些情况下这会很尴尬,因为你必须继续将当前的Y和Z浮动传递回新的Vector3 .

有没有人为这样的情况得到一些帮助,或者是我正在尝试做的错误而且不可能 .

在此先感谢,我为我的无知道歉!

2 回答

  • 1

    执行此代码时

    sprite.Position.X = 10;
    

    Sprite.Position 的召唤者不会被召唤 . 它只是为 Sprite.Position 调用getter,然后调用 Vector.X 的setter,因为 Vector.X 似乎是只读的 .

    因此,如果您可以修改 Vector 类的代码,则答案为是;如果您不能修改,则答案为否,除非您要使用反射 .

  • 0

    您可以使用Vector3.Set方法 .

    Position.Set(10, 0, 0);
    

相关问题