为什么字符串类型有.ToString()方法?

CJ7*_*CJ7 46 c# string

为什么字符串数据类型有.ToString()方法?

Mar*_*ers 71

与.NET中的几乎所有类型System.String一样,该类型派生自.有一个方法,所以继承这个方法.它是一个虚方法,并覆盖它以返回对自身的引用,而不是使用返回类型名称的默认实现.System.ObjectObjectToString()StringString

从Reflector,这是ToString的实现Object:

public virtual string ToString()
{
    return this.GetType().ToString();
}
Run Code Online (Sandbox Code Playgroud)

这是覆盖String:

public override string ToString()
{
    return this;
}
Run Code Online (Sandbox Code Playgroud)


Eri*_*sch 9

正如马克指出的那样,它只是返回对自身的引用.但是,为什么这很重要?所有基本类型都应返回自己的字符串表示形式.想象一下这样工作的日志记录功能:

public void Log(object o) {
    Console.WriteLine(o.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这允许您传递任何基本类型并记录它的内容.没有字符串返回本身,它只会打印出"字符串"而不是它的内容.您也可以使用模板功能执行相同的操作.

觉得这很傻?这基本上是字符串格式化功能的作用.执行此操作时,它会调用"ToString":

Console.WriteLine("{0}", myString);
Run Code Online (Sandbox Code Playgroud)