ふらっとC#,C♯,C#(初心者用) Part39
■ このスレッドは過去ログ倉庫に格納されています
0305デフォルトの名無しさん
2009/03/22(日) 13:59:30今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
class RegularizedAngle
{
private float InAngle;
public float Angle
{
get { return Angle; }
set
{
//Angleが負値だったら正値に
if (value < 0) Angle = (float)(Math.PI * 2f) + Angle;
//valueが2π以上だったら2πで剰余算
Angle = value % (float)(Math.PI * 2f);
}
}
}
これを普通のfloatと同じように扱いたいんです。たとえば・・・
RegularizedAngle Ang = (float)(Math.PI * 2f); //すなわち6.28・・・の代入
Ang += 1; //代入したとき内部で正規化がおこなわれて1になる。
Ang += Ang; //これで2になる?
こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型を継承したクラスを作ればよいのでしょうか・・・?
■ このスレッドは過去ログ倉庫に格納されています