为什么要override ToString()方法——读《你必须知道的.net》
2012-01-24 15:19
225 查看
System.Object 是所有类型的基类,任何类型都直接或间接继承自 System.Object 类。没有指定基类的类型都默认继承于 System.Object。
我们选择 Object 的ToString()方法来分析其实现
public virtual string ToString()
{
return this.GetType().FullName.ToString();
}
可见,默认情况下,对象调用 ToString方法将返回类型全名称,也就是命名空间加类型名全称。
在通常的情况下,ToString方法提供了在子类中重新覆写基类方法而获取对象当前值的字符串信息的合理途径。例如,下面的类型MyLocation将通过 ToString方法来获取其坐标信息:
class MyLocation
{
private int x = 0;
private int y = 0;
public override string ToString()
{
return String.Format("The location is ({0}, {1}).", x, y);
}
}
我们选择 Object 的ToString()方法来分析其实现
public virtual string ToString()
{
return this.GetType().FullName.ToString();
}
可见,默认情况下,对象调用 ToString方法将返回类型全名称,也就是命名空间加类型名全称。
在通常的情况下,ToString方法提供了在子类中重新覆写基类方法而获取对象当前值的字符串信息的合理途径。例如,下面的类型MyLocation将通过 ToString方法来获取其坐标信息:
class MyLocation
{
private int x = 0;
private int y = 0;
public override string ToString()
{
return String.Format("The location is ({0}, {1}).", x, y);
}
}
相关文章推荐
- 为什么toString方法可以用来区分数组和对象?
- 《问题总结》JAVA什么时候要覆盖toString()、equals()、hashCode()方法??为什么要覆盖呢? 《通俗回答》
- java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
- ToString()方法为什么不涉及装箱和拆箱操作
- C# 为什么要重写了object类的ToString()方法
- 如何防止覆盖(override)toString方法时产生递归调用
- 为什么toString 方法会自动被调用
- Java 中接口为什么可以调用 toString 方法,接口中根本就没有 toString 方法?
- C#中为什么要重写ToString()方法
- 如何防止覆盖(override)toString方法时产生递归调用
- 为什么toString()方法会自动被调用
- getText()方法为什么要加toString
- 如何防止覆盖(override)toString方法时产生递归调用
- 今天才知道.原来Enum类型的ToString方法是不可以override的
- Java 中接口为什么可以调用 toString 方法,接口中根本就没有 toString 方法?
- 为什么 JavaScript 中基本数据类型拥有 toString 之类方法?
- override的方法,为什么会被自动执行?
- java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
- 为什么要重写toString()方法和hashcode()方法
- 为什么SpringAOP使用JDK动态代理时好像没有代理Object.[equals()、hashCode()、toString()]这三个方法