这是我现在已经使用了很长时间的风格,而且运作良好:通过使用
public struct Point3D : IFormattable
{
public static string DefaultFormat = "F3";
public float x,y,z;
public string ToString(string format, IFormatProvider formatProvider)
{
string fmt = "({0:#},{1:#},{2:#})".Replace("#", format);
return string.Format(formatProvider, fmt, x, y, z);
}
public string ToString(string format)
{
return ToString(format, null);
}
public override string ToString()
{
return ToString(DefaultFormat);
}
}
static void Main(string[] args)
{
Point3D A = new Point3D() { x = (float)Math.PI, y = (float)(-4/Math.PI), z = (float)(0.005 * Math.PI) };
Debug.WriteLine(A.ToString());
Debug.WriteLine(A.ToString("F2"));
}
打印出以下
(3.142,-1.273,0.016)
(3.14,-1.27,0.02)
这正是我想避免的。如果我每次想要打印一个点时最终都明确地实现它,那么为Point3D使用ToString()会有什么意义? – Dina 2012-03-15 10:58:44