c# - ToString() 方法如何在类中被覆盖和格式化?

标签 c# .net overriding tostring

我在 Google 和这个网站上都进行了搜索以找到答案。我也在我的课本上看过,但我仍然不明白它是如何应用的。

这是我知道的:

  • 它用于显示对象对自身的了解。

  • 它可用于格式化关于它对自身的了解的输出。

  • 已在要使用的方法中覆盖。

最佳答案

认为你有一个像这样的类:

public class Person
{
   public string FirstName { get; set;}
   public string LastName { get; set;}
   private string age;
}

使用这个:

public override string ToString()
{
   return string.Format("[First Name: {0}; Last Name: {1}; Age: {2}]", FirstName, LastName, age);
}

将揭示该类的所有内部结构。实际上它最适合用于以预格式化的方式快速检索类的公共(public)字段(从而有效地将封装在类中的数据转换为字符串)。

此外,Pro C# 2010 and the .NET 4 Platform 一书中还有一个非常有用的建议:“您创建的许多类(和结构)都可以从重写 ToString() 中获益,以便返回类型当前状态的字符串文本表示。这对于调试目的(以及其他原因)非常有帮助。您选择如何构造此字符串是个人选择的问题;但是,推荐的方法是将每个名称分开/value 与分号成对并将整个字符串括在方括号中。但是,请始终记住,正确的 ToString() 覆盖还应该考虑在继承链上定义的任何数据。当您为扩展自定义的类覆盖 ToString() 时基类,首要任务是使用 base 关键字从父类获取 ToString() 值。一旦获得父类的字符串数据,就可以附加派生类的自定义信息。”

关于c# - ToString() 方法如何在类中被覆盖和格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657991/

相关文章:

c# - 如何在自定义 XML 序列化方法中使用默认 XML 序列化

python - 类属性的继承(python)

c# - 防止设置控件的 Size 属性?

java - 使用 AD 凭据输入表单字段而不是浏览器集成身份验证窗口的不良做法?

c# - 为什么我的 Silverlight XAML 绑定(bind)单元测试失败?

c# - 在 Roslyn 中加载可移植 MetadataReference 的正确方法是什么?

c# - 序列化时我犯了什么错误?

c# - 为什么 Console.Write 以不同方式对待字符 x266A?

java - 在构造函数中调用像 Swing 的 add() 这样的可覆盖方法

c# - Debug模式与 Release模式 - IsJITOptimizerDisabled 属性