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

时间:2014-07-12 08:37:18

标签: c# accessor

这似乎是一个奇怪的问题,但无论如何我都去了。

我有一个名为Sprite的类,它具有" Position"等属性。和"尺寸"。当其中一个属性被更改时,我需要触发一个私有方法,该方法使用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 个答案:

答案 0 :(得分:1)

执行此代码时

sprite.Position.X = 10;
不会调用

Sprite.Position的二传手。它只调用Sprite.Position的getter,然后调用Vector.X的setter失败,因为Vector.X似乎是只读的。

如果您可以修改Vector课程的代码,则答案为是;如果您不能修改,则答案为否。

答案 1 :(得分:0)

您可以使用Vector3.Set方法。

Position.Set(10, 0, 0);
相关问题