c#如何进行私人套房物业?

时间:2016-02-04 23:34:22

标签: c#

我正在创建一个VECTOR对象,但是我在构造函数中初始化它:

public VECTOR position { get; private set; }

我正在做这个操作:

position.x += 2;

VECTOR的变量x定义为:

public double x { get; set; } 

当我执行+=2操作时,我收到错误:

  

无法修改'Projectile.position'的返回值,因为它是   不是变量

我希望能够修改当前类中的位置向量,我希望它可以访问但在其他类中不可修改。

2 个答案:

答案 0 :(得分:1)

您的问题可能是Vector类实际上是struct。假设您有以下声明:

public class Projectile
{
    public VECTOR position { get; private set; }        

    public Projectile()
    {
        position = new VECTOR();
    }
}

public struct VECTOR 
{
    public double x {get; set;} 
}

您无法直接编辑position属性的属性,因为您正在访问该字段的副本(解释为here)。

如果你不想将你的VECTOR转换成一个类,你可以添加一个更新你的射弹位置的方法:

public void UpdatePosition(double newX)
{       
    var newPosition = position;
    newPosition.x = newX;

    position = newPosition;
}

这将创建位置的副本,然后更新其x属性并覆盖存储的位置。用法类似于:

p.UpdatePosition(p.position.x + 2);

答案 1 :(得分:-1)

在类中公开VECTOR的X属性(和其他)。

public class myObject {
private VECTOR position;
public double X { get{return position.x;}set{position.x=value;}}
}

用法示例:     myObject.X + = 2;