C#:应该如何实现ToString()?

Ste*_*ger 7 c# tostring

问题是:

  • GUI库喜欢ToString用作类的默认表示.它需要本地化.
  • ToString用于记录.它应该提供与编程相关的信息,不翻译并包括内部状态,如代理键和枚举值.
  • ToString许多字符串操作使用它们将对象作为参数,例如String.Format,在写入流时.根据您认为不同的上下文.
  • ToString如果同一对象有许多不同的表示,则太有限了,例如.长短形式.

由于使用的不同,有许多不同的实现方式.所以它们太不可靠而不是真正有用.

如何ToString实施才有用?什么时候应该ToString使用,什么时候应该避免?


.NET Framework文档说:

此方法返回对文化敏感的人类可读字符串.

有一个类似的问题,但不一样.

Bea*_*692 5

看起来你对一个小小的方法有很大的期望:)据我所知,在很多不同的上下文中使用一般方法并不是一个好主意,特别是当它的行为因类而异.

这是我的建议:

1.不要让GUI库使用对象的ToString().而是使用更有意义的属性(几乎所有控件都可以自定义以显示除ToString之外的其他属性),例如使用DisplayMember.2.当获取有关对象的某些信息(用于记录或其他用法)时,让某人决定(另一个对象或对象本身)应该提供什么以及应该如何显示它.(策略模式可能派上用场)