定义类Angle,代表几何中的角度。
public class Angle
{
private readonly int degrees;//度
private readonly int minutes;//分
private readonly int seconds;//秒
public Angle(int degrees, int minutes, int seconds)
{
this.degrees = degrees;
this.minutes = minutes;
this.seconds = seconds;
}
public override string ToString()
{
return string.Format("{0}°?{1}′?{1}″?", degrees, minutes, seconds);
}
public static implicit operator float(Angle angle)
{
return (float)angle.degrees + (float)angle.minutes / 60 + (float)angle.seconds / 3600;
}
public static explicit operator Angle(float angle)
{
int degrees = (int)angle;
int minutes = (int)((angle - degrees) * 60);
int seconds = (int)((angle - degrees) * 3600 - minutes * 60);
return new Angle(degrees, minutes, minutes);
}
}
其中,implicit代表隐式转换,explicit代表显式转换。
class Program
{
static void Main(string[] args)
{
Angle angle = new Angle(35, 26, 46);
Console.WriteLine("角度为:{0}",angle.ToString());
float fAngle = angle;
Console.WriteLine("转换成float后角度为:{0}°", fAngle.ToString());
Angle angle1 = (Angle)fAngle;
Console.WriteLine("再次转换成Angle后角度为:{0}°", angle1.ToString());
}
}
注意:隐式转换与显式转换的用法。
执行结果如下图所示。