为什么是String.ToString()?

时间:2012-04-25 08:47:19

标签: .net vb.net

  

可能重复:
  C#: why does the string type have a .ToString() method

为什么ToString类(VB.NET)中存在String方法?

String.ToString()

如果像

一样使用它会是一个开销
TextBox.Text.ToString()

5 个答案:

答案 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转换为人性化的字符串。