zoukankan      html  css  js  c++  java
  • EffectiveC#5--始终提供ToString()

    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()。

  • 相关阅读:
    关于C_Sharp集中处理异常
    关于Java连接SQL Sever数据库
    MongoDB 的主键 _id 为什么不是自增数字
    svn 命令行基本操作
    如何删除 Git 仓库中的历史提交记录
    .git 文件太大时怎样处理
    Git 提交到多个远程仓库
    Git SSH keygen 生成与配置
    Git 远端回滚
    Git 合并或修改线上 commit
  • 原文地址:https://www.cnblogs.com/tiantianle/p/4859629.html
Copyright © 2011-2022 走看看