2

重複の可能性:
C#: 文字列型に .ToString() メソッドがあるのはなぜですか

クラス(VB.NET)ToStringにメソッドが存在するのはなぜですか?String

String.ToString()

のように使用するとオーバーヘッドになりますか

TextBox.Text.ToString()
4

5 に答える 5

8

ToStringメソッドは継承元Objectで見つかります。Stringの実装はObject.ToString、型名を出力することです。

public virtual string ToString() {
    return this.GetType().ToString();
} 

Stringはこのメソッドをオーバーライドして、それ自体を返します。

public override string ToString() {
    return this;
} 

コードTextBox.Text.ToString()には不要な への呼び出しがありますが、その呼び出しToStringによるパフォーマンスへの顕著な影響はほとんどありません。

于 2012-04-25T08:49:39.847 に答える
6

すべてのオブジェクトには がToString()あるため、どのオブジェクトでも次のようになります。

  • obj.ToString()タイプを知らなくても呼び出すことができますobj

  • obj.ToString()メソッドが存在しないことを気にせずに呼び出すことができます(一般的なログ記録コードは、これを行う場所の一般的な例です)。

文字列の呼び出しのオーバーヘッドはToString()、1 行の関数の呼び出しにすぎないため、無視できることはほぼ確実です。

于 2012-04-25T08:48:59.663 に答える
2

ToString()から派生したすべてのクラスに存在しSystem.Objectます。はい、それも含まSystem.Stringれます。

そこはおそらく少し余分であり、ドキュメントにはまったく同じインスタンスが返されると記載されています。したがって、メソッド呼び出しを除いて、パフォーマンスのオーバーヘッドはありません。

于 2012-04-25T08:49:15.413 に答える
1

System.Stringクラスは、他のクラスと同様にクラスから派生しているため、次のようSystem.Objectなさまざまなメソッドから自動的に継承されます。

public virtual bool Equals(Object obj)
public virtual int GetHashCode()
public virtual string ToString()

したがって、比較したり、テーブルにオブジェクトを入力したり、オブジェクトを人間にわかりやすい文字列に変換したりできます。

于 2012-04-25T08:53:38.950 に答える
1

すべてがオブジェクトです (または、オブジェクトとしてボックス化できます)。objectメソッドを定義します。つまりToString、文字列はオブジェクトであるため、ToString メソッドがあります。

于 2012-04-25T08:49:41.293 に答える