我有一个代表形状的类。Shape 类有一个名为 Angle 的属性。我希望此属性的设置器自动将值包装到范围 [0,359] 中。
不幸的是,一个简单的_Angle = value % 360;
只适用于正数。在 C# 中,-40 % 360 == -40
. Google calc 会按照我想要的方式进行。该值应为 320。
C# 中最优雅的解决方案是什么?
这是我到目前为止最好的方法:
public double Angle {
get { return _Angle; }
set {
if ( value >= 0 ) {
_Angle = value % 360;
}
else {
_Angle = value - (360 * ((int)(value / 360) - 1));
}
}
}
编辑:
谢谢大家,我现在有:
public double Angle {
get { return _Angle; }
set {
_Angle = (value % 360) + ((value < 0) ? 360 : 0);
}
}
..哪个更好:)