形を表すクラスがあります。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);
}
}
..どちらがはるかに優れています:)