【发布时间】:2012-02-05 13:02:57
【问题描述】:
在 C# 中有什么方法可以做到这一点:
map.player.x = 5;
在保持Point 类型的player(或静默转换为1)的同时,仍然能够在执行分配时检查值的正确性?
为了更清楚:
-
Point是 C#/.net 标准库定义的结构体,按值传递。 - 创建一个包装类并将
Point的所有方法实现为对Point的调用既冗长又乏味。 - 拥有一个只对
Point进行隐式覆盖的包装类将不允许上述情况。它必须写成(Point)(map.player).x,这很笨拙。
【问题讨论】:
-
应该是X(不是x)吗?标准Point有X和Y,c#对大小写很挑剔……?
-
另外,玩家是属性还是字段?大概是这里的一个领域? (否则它不会编译,IIRC)
-
@MarcGravell 是的,它应该是 X。如果它是一个属性或一个字段,我正在辩论。我想获得两者的优势。
-
您的
Point真的与.NET 库中的“标准”Point有任何关系吗?可变结构是邪恶的。除非您有充分的理由,否则请避免使用它们。 -
@Jason 只是比自己实现所有的操作符更方便。