C# 如何执行私有集属性
本文关键字:属性 执行 何执行 | 更新日期: 2023-09-27 18:33:21
我正在创建一个这样的VECTOR
对象,但我正在构造函数中初始化它:
public VECTOR position { get; private set; }
我正在执行此操作:
position.x += 2;
VECTOR
有一个变量 x 定义为:
public double x { get; set; }
当我执行+=2
操作时出现错误,该操作显示:
我希望无法修改"弹丸位置"的返回值,因为它是 不是变量
能够修改当前类中的位置向量,并且我希望它可以在其他类中可访问但不可修改。
可能,您的问题在于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
属性的属性,因为您正在访问该字段的副本(此处已解释)。
如果您不想将 VECTOR 转换为类,您可以添加一个更新弹丸位置的方法:
public void UpdatePosition(double newX)
{
var newPosition = position;
newPosition.x = newX;
position = newPosition;
}
这将创建仓位的副本,然后更新其 x 属性并覆盖存储的仓位。用法将类似于这样:
p.UpdatePosition(p.position.x + 2);
在类中公开 VECTOR 的 X 属性(和其他属性)。
public class myObject {
private VECTOR position;
public double X { get{return position.x;}set{position.x=value;}}
}
使用示例: myObject.X += 2;