public struct CircleCenter
{
public double x;
public double y;
}
public class Circle : IComparable, IComparable<Circle>
{
public double Radius = 0;
public CircleCenter Center { get; set; }
public int CompareTo(object obj)
{
if (!(obj is Circle))
throw new ArgumentException("只能比对Circle对象");
return CompareTo(obj as Circle);
}
public int CompareTo(Circle other)
{
double ret = Math.Abs(other.Radius - this.Radius);
if (ret < 1e-3)
return 0;
if (other.Radius < this.Radius)
return 1;
return -1;
}
public override int GetHashCode()
{
// 整数部分与小数点后3位相同的对象生成相同的哈希值
return (int)(Radius * 1000);
}
public override bool Equals(object obj)
{
if (this.CompareTo(obj) == 0)
return true;
return false;
}
public static bool operator ==(Circle obj1, Circle obj2)
{
return obj1.Equals(obj2);
}
public static bool operator !=(Circle obj1, Circle obj2)
{
return !obj1.Equals(obj2);
}