语言:C#
struct Vector:IFormattable
{
public double x, y, z;
public Vector(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}
public Vector(double x) : this(x, 0.0, 0.0) { }
public Vector(double x, double y) : this(x, y, 0.0) { }
#region IFormattable 成员
public string ToString(string format, IFormatProvider formatProvider)
{
if (string.IsNullOrEmpty(format))
return ToString();
string formatUp = format.ToUpper();
switch (formatUp)
{
case "N": //显示|Vector|的值
return (x * x + y * y + z * z).ToString();
case "DP": //2D显示
return string.Format("({0},{1})", x, y);
case "DS": //2D显示
return string.Format("({0},{1},{2})", x, y, z);
case "EP": //2D显示
return string.Format("({0:E},{1:E})", x, y);
case "ES": //3D显示
return string.Format("({0:E},{1:E},{2:E})", x, y, z);
case "IJ": //2D显示
return string.Format("{0} i + {1} j", x, y);
case "IJK": //3D显示
return string.Format("{0} i + {1} j + {2} k", x, y, z);
default:
return ToString(); //3D显示
}
}
#endregion
public override string ToString()
{
return string.Format("({0},{1},{2})", x, y, z);
}
}