《C#高效编程》读书笔记05-为类型提供ToString()方法
2024-08-26 09:04:46
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));
最新文章
- 无阻塞加载js,防止因js加载不了影响页面显示
- WindowsFormsIntegration.dll
- qq临时会话代码修改
- 最简puremvc
- nyoj-291 互素数个数 欧拉函数
- 一个好用的hibernate泛型dao
- ssh框架的搭建
- android软键盘的管理和属性的设置
- Tomcat 配置支持APR
- 十四、Hadoop学习笔记————Zookeeper概述与基本概念
- 1、Linux下部署NetCore应用
- 1.3 Windows注册表
- ACM练习中关于LCS的题目
- SockJS
- 使用spring-session共享springmvc项目的session
- Mybatis学习总结(二)——Mapper代理开发
- float 、double 加减乘除出现小数位多出的问题
- BZOJ.2434.[NOI2011]阿狸的打字机(AC自动机 树状数组 DFS序)
- Linux系统更改默认Python版本
- LVS-概念