Effective C#(2)
条款5:总是提供ToString()方法
重写System.Object.ToString()这个函数。该方法主要的功能就是为类型提供一个最常用的文本表示。
有时候我们还要提供功能更强大的IFormattable接口来解决问题。该接口包含了一个重载的ToString()方法,它允许我们为类型指定某种格式信息。当我们需要为类型创建不同形式的字符串输出时,这个接口非常有用。重写System.Object.ToString()这个函数。该方法主要的功能就是为类型提供一个最常用的文本表示。
 1 public class Customer
public class Customer
2 {
{
3 private string _name;
  private string _name;
4 private string _revenue;
  private string _revenue;
5 private string _contactPhone;
  private string _contactPhone;
6 }
}
7 //重写版本
//重写版本
8 public override string ToString()
public override string ToString()
9 {
{
10 return _name;
  return _name;
11 }
}
 public class Customer
public class Customer2
 {
{3
 private string _name;
  private string _name;4
 private string _revenue;
  private string _revenue;5
 private string _contactPhone;
  private string _contactPhone;6
 }
}7
 //重写版本
//重写版本8
 public override string ToString()
public override string ToString()9
 {
{10
 return _name;
  return _name;11
 }
} Code
Code1 IFormattable c1 = new Customer();
IFormattable c1 = new Customer();
2 Console.WriteLine("Customer record:{0}",c1.ToString("nrp",null));
Console.WriteLine("Customer record:{0}",c1.ToString("nrp",null));
这里需要注意的是1.必须提供通用格式"G";2.必须提供两种形式的空""和null;3.以上两点在重写时必须与Object.ToString()返回的字符串相同。 IFormattable c1 = new Customer();
IFormattable c1 = new Customer();2
 Console.WriteLine("Customer record:{0}",c1.ToString("nrp",null));
Console.WriteLine("Customer record:{0}",c1.ToString("nrp",null));当类的使用者期望一种类的作者没有考虑到的格式,我们就要使用IFormatProvider接口啦。我们需要创建两个类:一个实现IFormatProvider接口——该类有一个方法:GetFormat(),返回一个实现了ICustomFormatter接口的对象;另一个实现ICustomFormatter接口——该类用于创建自定义的输出格式。
 Code
Code 
                    
                


 }
    } 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号