通过重载ToString() 方法可以很好的将你的对象以格式化的形式展现给其他程序员
尤其在Windows form, Web Form, HTML 等界面展现时可以提供编程的灵活度
// supported formats:
// substitute n for name.
// substitute r for revenue
// substitute p for contact phone.
// Combos are supported: nr, np, npr, etc
// "G" is general.
string System.IFormattable.ToString(string format,
IFormatProvider formatProvider)
{
if (formatProvider != null)
{
ICustomFormatter fmt = formatProvider.GetFormat(
this.GetType()) as ICustomFormatter;
if (fmt != null)
return fmt.Format(format, this, formatProvider);
}
switch (format)
{
case "r":
return Revenue.ToString();
case "p":
return ContactPhone;
case "nr":
return string.Format("{0,20}, {1,10:C}",
Name, Revenue);
case "np":
return string.Format("{0,20}, {1,15}",
Name, ContactPhone);
case "pr":
return string.Format("{0,15}, {1,10:C}",
ContactPhone, Revenue);
case "pn":
return string.Format("{0,15}, {1,20}",
ContactPhone, Name);
case "rn":
return string.Format("{0,10:C}, {1,20}",
Revenue, Name);
case "rp":
return string.Format("{0,10:C}, {1,20}",
Revenue, ContactPhone);
case "nrp":
return string.Format("{0,20}, {1,10:C}, {2,15}",
Name, Revenue, ContactPhone);
case "npr":
return string.Format("{0,20}, {1,15}, {2,10:C}",
Name, ContactPhone, Revenue);
case "pnr":
return string.Format("{0,15}, {1,20}, {2,10:C}",
ContactPhone, Name, Revenue);
case "prn":
return string.Format("{0,15}, {1,10:C}, {2,15}",
ContactPhone, Revenue, Name);
case "rpn":
return string.Format("{0,10:C}, {1,15}, {2,20}",
Revenue, ContactPhone, Name);
case "rnp":
return string.Format("{0,10:C}, {1,20}, {2,15}",
Revenue, Name, ContactPhone);
case "n":
case "G":
default:
return Name;
}
}