[英]c# how do I do a private set property?
我正在像这样创建一个VECTOR
对象,但是我正在构造函数中对其进行初始化:
public VECTOR position { get; private set; }
我正在执行此操作:
position.x += 2;
VECTOR
的变量x定义为:
public double x { get; set; }
我执行+=2
操作时收到错误消息:
无法修改'Projectile.position'的返回值,因为它不是变量
我希望能够在当前类中修改位置矢量,并且希望它可以在其他类中访问但不能修改。
可能您的问题是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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.