zoukankan      html  css  js  c++  java
  • Effective C#(2)

    条款5:总是提供ToString()方法

    重写System.Object.ToString()这个函数。该方法主要的功能就是为类型提供一个最常用的文本表示。
     1public class Customer
     2{
     3  private string _name;
     4  private string _revenue;
     5  private string _contactPhone;
     6}

     7//重写版本
     8public override string ToString()
     9{
    10  return _name;
    11}
    有时候我们还要提供功能更强大的IFormattable接口来解决问题。该接口包含了一个重载的ToString()方法,它允许我们为类型指定某种格式信息。当我们需要为类型创建不同形式的字符串输出时,这个接口非常有用。
    Code
    添加该函数,使得Customer类型的客户可以定制Customer类型的表示:
    1IFormattable c1 = new Customer();
    2Console.WriteLine("Customer record:{0}",c1.ToString("nrp",null));
    这里需要注意的是1.必须提供通用格式"G";2.必须提供两种形式的空""和null;3.以上两点在重写时必须与Object.ToString()返回的字符串相同。
    当类的使用者期望一种类的作者没有考虑到的格式,我们就要使用IFormatProvider接口啦。我们需要创建两个类:一个实现IFormatProvider接口——该类有一个方法:GetFormat(),返回一个实现了ICustomFormatter接口的对象;另一个实现ICustomFormatter接口——该类用于创建自定义的输出格式。
    Code
    只有在极少数情况下,我们需要提供比较复杂的输出格式时,才应该实现IFormattable接口。一般只要重写ToString()方法就可以满足需要。
  • 相关阅读:
    支付宝小程序开发——踩坑实录
    支付宝小程序开发——rich-text富文本组件支持html代码
    SFTP 文件上传下载工具类
    码农修真传
    Spring Data学习中心
    深入理解JDBC设计模式: DriverManager 解析
    Redis(十一):哨兵模式架构设计分析
    Redis(十):pub/sub 发布订阅源码解析
    Redis(九):主从复制的设计与实现解析
    线程池技术之:ThreadPoolExecutor 源码解析
  • 原文地址:https://www.cnblogs.com/wxfasdic/p/1566630.html
Copyright © 2011-2022 走看看