9
9
2015
0

[Effective C#] Item 5: Always Provide ToString()


开学了,特别忙(浪),这一系列的博文很久没更新了。。。

ToString()方法用于提供对象的字符串表示,它可以向类的使用者显示对象的信息。例如,WPF控件,Silverlight控件,以及控制台输出,它们都默认使用对象的ToString()方法来显示它。同时,ToString()方法也可以在调试时提供很大的便利。原则上,应该为每个自定义类型提供ToString()方法。

所有类型都有一个继承自System.Object的ToString()方法,但是,它返回的是对象的完整类型名,这显然并没有什么卵用。

一般,可以重写这个继承的方法来提供ToString()实现。下面是一个简单的例子。

上面的Customer类重写了ToString()方法,使其返回客户的名字。即使是为调试,这也比继承的方法要好很多。

仅仅是加了两三行代码,却可以在之后节约很多时间,包括你自己的和别人的,何乐而不为呢?

另外提一点,编译器会自动为匿名类型创建一个具有一定可读性的ToString()方法。

如果要提供更复杂的ToString()方法,可以考虑实现接口IFormattable。这个接口定义了这样一个方法:sring ToString(string, IFormatProvider),它允许你根据传入的格式化字符串以及本地化信息来生成一个符合要求的字符串表示。

这个个人感觉如果不是做类库的话用处不是特别大,知道如何使用实现了该接口的类就行了,具体的可以参考MSDN文档和《Effective C#》中的相关内容。

下面是使用IFormattable.ToString()的例子。

这段代码从控制台读入一个数,并输出它的大写十六进制形式,且如果不足6位会在左侧补0。

Category: C#及OOP | Tags: Effective C# | Read Count: 336

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com