我已经在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);
}
这将揭示类的所有内部细节。实际上,它最适合以预格式化的方式快速检索类的公共字段(从而有效地将封装在类中的数据转换为字符串)。
此外,《Pro C# 2010 and the .NET 4 Platform》书中有一个非常有用的建议:“许多你创建的类(和结构体)可以从重写ToString()方法中受益,以便返回类型当前状态的文本表示形式。这在调试(等其他原因)方面非常有帮助。如何构造此字符串是个人选择的问题;然而,推荐的方法是使用分号分隔每个名称/值对,并在方括号内包含整个字符串。但是,请始终记住,正确的ToString()覆盖还应考虑到任何定义在继承链上的数据。当你为扩展自定义基类的类重写ToString()时,首要任务是使用base关键字从父级获取ToString()值。一旦您获得了父类的字符串数据,就可以附加派生类的自定义信息。”
object
类型。 object
类为您提供了ToString()
的默认实现,默认情况下仅打印类的名称,除非类已覆盖ToString()
方法以打印其他内容。 类的名称并不特别有用,因此通常最好在您编写的任何类中重写ToString()
,因为提供类的可读表示很有用。 当您想要检查类的实例时,调试器实际上会默认使用您的ToString()
实现。public override string ToString()
{
// return a string that has something to do with your class
}
例子:
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public int Age {get;set;}
public override void ToString()
{
// return whatever makes sense here...
return string.Format("[Person: FirstName={0}, LastName={1}, Age={2}]", FirstName, LastName, Age);
}
}
string.Format
方法只是创建字符串的一种方式。string.Format 的第一个参数是“格式”,可以包含文字和占位符,你需要提供其他参数作为占位符的值。上面的 {0}
、{1}
和 {2}
是 FirstName、LastName 和 Age 参数的占位符,这些参数在格式之后传递。如果您想了解更多信息,请阅读有关string.Format的内容。重写 ToString()
方法:
public class Test
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
// Do your formatting here
return LastName + ", " + FirstName;
}
}
public override string ToString()
{
return string.Format("{0,5}d - {1:00}:{2:00}", m_nDays, m_nHours, m_nMinutes);
}