为什么字符串类型有一个.ToString()方法?
答
类型System.String
,像almost所有类型的.NET,从System.Object
导出。 Object
有一个ToString()
方法,因此String
继承此方法。这是一种虚拟方法,String
将覆盖它以返回对自身的引用,而不是使用返回类型名称的默认实现。
从反射器,这是的ToString在Object
实现:
public virtual string ToString()
{
return this.GetType().ToString();
}
而且这是在String
倍率:
public override string ToString()
{
return this;
}
答
这是对Java甚至真的,我想大多数的面向对象的编程语言有这样的,有问题的对象的字符串表示,因为每个默认情况下它创建的类从Object中extedns,从而导致使用toString()方法,请记住它只适用于不是用于前缀类型的对象。
答
正如马克指出,这只是恢复到自身的引用。但是,为什么这很重要?所有基本类型都应返回自己的字符串表示形式。想象一下这样工作的日志记录功能:
public void Log(object o) {
Console.WriteLine(o.ToString());
}
这允许您传递任何基本类型并记录它的内容。如果没有字符串返回,它只会打印出“String”而不是它的内容。你也可以用模板函数做同样的事情。
认为这是愚蠢的?这基本上是字符串格式化函数的作用。当你做到这一点,它调用“的ToString”:
Console.WriteLine("{0}", myString);
答
在C#中的任何对象有一个字符串的方法,但我想不出理由,为什么人会在此刻的ToString投一个字符串转换为字符串()从对象类型继承,这当然是一个字符串的例子。
答
你会得到一个空引用异常,如果你的字符串为NULL,并且使用的ToString();
下会抛出:
string.Format("msgBoxTitle = {0}", msgBoxTitle.ToString())
最好只写......这不会抛出。
string.Format("msgBoxTitle = {0}", msgBoxTitle)
出色答卷 – 2011-02-07 09:52:54