@@ -101,5 +101,107 @@ public override int GetHashCode()
101101 {
102102 return Degree . GetHashCode ( ) ;
103103 }
104+
105+ /// <summary>
106+ /// 表示正数的角度
107+ /// </summary>
108+ /// <param name="a"></param>
109+ /// <returns></returns>
110+ public static Angle operator + ( Angle a ) => a ;
111+
112+ /// <summary>
113+ /// 表示负数的角度
114+ /// </summary>
115+ /// <param name="a"></param>
116+ /// <returns></returns>
117+ public static Angle operator - ( Angle a ) => Angle . FromDegreeValue ( - a . Degree ) ;
118+
119+ /// <summary>
120+ /// 两个角度的相加
121+ /// </summary>
122+ /// <param name="a"></param>
123+ /// <param name="b"></param>
124+ /// <returns></returns>
125+ public static Angle operator + ( Angle a , Angle b )
126+ => Angle . FromDegreeValue ( a . Degree + b . Degree ) ;
127+
128+ /// <summary>
129+ /// 两个角度的相减
130+ /// </summary>
131+ /// <param name="a"></param>
132+ /// <param name="b"></param>
133+ /// <returns></returns>
134+ public static Angle operator - ( Angle a , Angle b )
135+ => a + ( - b ) ;
136+
137+ /// <summary>
138+ /// 角度乘以倍数
139+ /// </summary>
140+ /// <param name="a"></param>
141+ /// <param name="b"></param>
142+ /// <returns></returns>
143+ public static Angle operator * ( Angle a , double b )
144+ => Angle . FromDegreeValue ( a . Degree * b ) ;
145+
146+ /// <summary>
147+ /// 倍数乘以角度,效果和角度乘以倍数相同
148+ /// </summary>
149+ /// <param name="a"></param>
150+ /// <param name="b"></param>
151+ /// <returns></returns>
152+ public static Angle operator * ( double a , Angle b ) => b * a ;
153+
154+ /// <summary>
155+ /// 角度除以倍数
156+ /// </summary>
157+ /// <param name="a"></param>
158+ /// <param name="b"></param>
159+ /// <returns></returns>
160+ public static Angle operator / ( Angle a , double b )
161+ {
162+ if ( b == 0 )
163+ {
164+ throw new DivideByZeroException ( ) ;
165+ }
166+
167+ return Angle . FromDegreeValue ( a . Degree / b ) ;
168+ }
169+
170+ /// <summary>
171+ /// 判断两个角度的大于
172+ /// </summary>
173+ /// <param name="a"></param>
174+ /// <param name="b"></param>
175+ /// <returns></returns>
176+ public static bool operator > ( Angle a , Angle b )
177+ => a . Degree > b . Degree ;
178+
179+ /// <summary>
180+ /// 判断两个角度的小于
181+ /// </summary>
182+ /// <param name="a"></param>
183+ /// <param name="b"></param>
184+ /// <returns></returns>
185+ public static bool operator < ( Angle a , Angle b )
186+ => b > a ;
187+
188+ /// <summary>
189+ /// 判断两个角度相等
190+ /// </summary>
191+ /// <param name="a"></param>
192+ /// <param name="b"></param>
193+ /// <returns></returns>
194+ public static bool operator == ( Angle a , Angle b ) => a . Equals ( b ) ;
195+
196+ /// <summary>
197+ /// 判断两个角度不相等
198+ /// </summary>
199+ /// <param name="a"></param>
200+ /// <param name="b"></param>
201+ /// <returns></returns>
202+ public static bool operator != ( Angle a , Angle b ) => ! a . Equals ( b ) ;
203+
204+ /// <inheritdoc />
205+ public override string ToString ( ) => $ "{ Degree : 0.000} °";
104206 }
105207}
0 commit comments