クラス(VB.NET)ToString
にメソッドが存在するのはなぜですか?String
String.ToString()
のように使用するとオーバーヘッドになりますか
TextBox.Text.ToString()
クラス(VB.NET)ToString
にメソッドが存在するのはなぜですか?String
String.ToString()
のように使用するとオーバーヘッドになりますか
TextBox.Text.ToString()
ToString
メソッドは継承元Object
で見つかります。String
の実装はObject.ToString
、型名を出力することです。
public virtual string ToString() {
return this.GetType().ToString();
}
型 String
はこのメソッドをオーバーライドして、それ自体を返します。
public override string ToString() {
return this;
}
コードTextBox.Text.ToString()
には不要な への呼び出しがありますが、その呼び出しToString
によるパフォーマンスへの顕著な影響はほとんどありません。
すべてのオブジェクトには がToString()
あるため、どのオブジェクトでも次のようになります。
obj.ToString()
タイプを知らなくても呼び出すことができますobj
obj.ToString()
メソッドが存在しないことを気にせずに呼び出すことができます(一般的なログ記録コードは、これを行う場所の一般的な例です)。
文字列の呼び出しのオーバーヘッドはToString()
、1 行の関数の呼び出しにすぎないため、無視できることはほぼ確実です。
ToString()
から派生したすべてのクラスに存在しSystem.Object
ます。はい、それも含まSystem.String
れます。
そこはおそらく少し余分であり、ドキュメントにはまったく同じインスタンスが返されると記載されています。したがって、メソッド呼び出しを除いて、パフォーマンスのオーバーヘッドはありません。
System.String
クラスは、他のクラスと同様にクラスから派生しているため、次のようSystem.Object
なさまざまなメソッドから自動的に継承されます。
public virtual bool Equals(Object obj)
public virtual int GetHashCode()
public virtual string ToString()
したがって、比較したり、テーブルにオブジェクトを入力したり、オブジェクトを人間にわかりやすい文字列に変換したりできます。
すべてがオブジェクトです (または、オブジェクトとしてボックス化できます)。object
メソッドを定義します。つまりToString
、文字列はオブジェクトであるため、ToString メソッドがあります。