标签:c field getter-setter
假设我在课堂上有一个属性:
Vector3 position{get; set;}
所以我在某处创建了该类的实例,现在我想改变position.x,现在这是不可能的,因为getter和setter设置并得到整个对象.所以我必须让一个临时的Vector3改变它的值,然后分配它.
通常情况下,我会将位置设为公共领域,以便解决问题.但是我不能在这种情况下这样做,因为position是接口的实现,接口不能有字段.
那么我怎样才能以最好的方式解决这个问题.
编辑:Vector3是一个结构,所以它是一个值类型
解决方法:
IMO,这里最简单的答案:
private Vector3 position;
public Vector3 Position {
get {return position;}
set {position = value;} // with @Mehrdad's optimisation
}
public float X {
get {return position.X;}
set {position.X = value;}
}
public float Y {
get {return position.Y;}
set {position.Y = value;}
}
public float Z {
get {return position.Z;}
set {position.Z = value;}
}
现在你可以改变obj.X,obj.Y和obj.Z,如果你只需要改变一个维度,或者改变obj.Position来改变一切.
如果您需要名称位置来实现接口,那么请明确地执行:
Vector3 IWhateverInterface.position {
get {return position;}
set {position = value;}
}
标签:c,field,getter-setter 来源: https://codeday.me/bug/20190713/1448381.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。