可能重复:
C#: why does the string type have a .ToString() method
为什么ToString
类(VB.NET)中存在String
方法?
String.ToString()
如果像
一样使用它会是一个开销TextBox.Text.ToString()
答案 0 :(得分:8)
ToString
方法位于Object
String
继承的Object.ToString
上。 public virtual string ToString() {
return this.GetType().ToString();
}
的实现是打印typename。
String
类型public override string ToString() {
return this;
}
会覆盖此方法以返回自身。
TextBox.Text.ToString()
代码ToString
对{{1}}进行了不必要的调用,但这样做不太可能产生明显的性能影响。
答案 1 :(得分:6)
所有对象都有ToString()
,因此对于任何对象:
您可以在不知道obj.ToString()
的类型的情况下致电obj
您可以调用obj.ToString()
,而不必担心不存在的方法(通用日志记录代码是您可能执行此操作的常见示例)
在字符串上调用ToString()
的开销只是对单行函数的调用,因此几乎可以肯定是可以忽略的。
答案 2 :(得分:2)
ToString()
存在于从System.Object
派生的每个类中。是的,这也包括System.String
。
这可能有点多余,documentation表示它将返回完全相同的实例。因此,除了方法调用之外,没有性能开销。
答案 3 :(得分:1)
所有东西都是一个物体(或者可以装箱作为物体)。 object
定义方法ToString
,ergo,string有一个ToString方法,因为它是一个对象。
答案 4 :(得分:1)
因为System.String
类与任何其他类一样派生自System.Object
类,
它会自动继承各种方法,如:
public virtual bool Equals(Object obj)
public virtual int GetHashCode()
public virtual string ToString()
因此,您可以比较,填充表格和对象,并将objets转换为人性化的字符串。