标签:
1.System.Object版的ToString()方法只返回类型的名字
2.知道要重写它,返回更有意义的信息,最好是提供几个重载版本.
3.当你设计更多的复杂的类型时(格式化文本)应该实现应变能力更强的IFormattable.ToString()
4.例子
public class Customer : IFormattable { //属性字段省略... public string 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,15},{1,10:C}", Name, ContactPhone); case "n": case "G": default: return Name; } } }
Customer使用者即可自定义其想要输出的格式:
1 IFormattable c1 = new Customer(); 2 Console.WriteLine("Customer record:{0}", c1.ToString("nr", null));
首先我们必须支持表示通用格式的"G";其次我们必须支持两种格式的空格式,即" "和null。这三种格式返回字符串都必须和Ojbect.ToString()的覆写版本的字符串相同。实现了IFormattable接口的类型,.NET BCL都会调用IFormattable()而不是Object.ToString()。
标签:
原文地址:http://www.cnblogs.com/tiantianle/p/4859629.html