System.Object.ToString()是.NET环境中最常用的方法之一。编写类型时,要提供一个合理的ToString版本,否则使用者就不得不自己构造一套可以阅读的表示。

public class Customer
{
public string Name { get; set; }
public decimal Revenue { get; set; }
public string ContactPhone { get; set; }
public override string ToString()
{
return string.Format("Name:{0},Revenue:{1, 10:C},ContactPhone:{2}", Name, Revenue, ContactPhone);
}
}

虽然简单的ToString()方法很多时候已经可以满足为用户定义的类型显示文本信息的需求,但有时还会需要功能更强的方法。

IFormattable接口包含了一个重载的ToString()方法,它允许为类型提供特定格式的信息。

public class Customer : IFormattable
{
public string Name { get; set; }
public decimal Revenue { get; set; }
public string ContactPhone { get; set; }
public override string ToString()
{
return string.Format("Name:{0},Revenue:{1, 10:C},ContactPhone:{2}", Name, Revenue, ContactPhone);
}
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 "n":
return Name;
case "np":
return string.Format("{0},{1, 15}", Name, ContactPhone);
default:
return Name;
}
}
}

这样,Customer的使用者即可自行定义其想要的输出格式:

var c1 = new Customer();
c1.Name = "Jack";
c1.ContactPhone = "13800138000";
Console.WriteLine("Customer record:{0}", c1.ToString("np", null));

最新文章

  1. 无阻塞加载js,防止因js加载不了影响页面显示
  2. WindowsFormsIntegration.dll
  3. qq临时会话代码修改
  4. 最简puremvc
  5. nyoj-291 互素数个数 欧拉函数
  6. 一个好用的hibernate泛型dao
  7. ssh框架的搭建
  8. android软键盘的管理和属性的设置
  9. Tomcat 配置支持APR
  10. 十四、Hadoop学习笔记————Zookeeper概述与基本概念
  11. 1、Linux下部署NetCore应用
  12. 1.3 Windows注册表
  13. ACM练习中关于LCS的题目
  14. SockJS
  15. 使用spring-session共享springmvc项目的session
  16. Mybatis学习总结(二)——Mapper代理开发
  17. float 、double 加减乘除出现小数位多出的问题
  18. BZOJ.2434.[NOI2011]阿狸的打字机(AC自动机 树状数组 DFS序)
  19. Linux系统更改默认Python版本
  20. LVS-概念

热门文章

  1. 删除 char[10][10] 中的一行
  2. AutoMapper学习笔记
  3. django examples 学习笔记(1)创建一个独立的python环境
  4. LAMP 2.0Apache日志切割
  5. struts2.Action中的method属性配置
  6. Java探索之旅(12)——equals方法及其覆盖
  7. Spring入门第二十二课
  8. kingadmin
  9. 【mysql模糊查询的几种方式】
  10. 2、Jquery_事件