2012-04-09 6 views
6

クラスの.ToString()メソッドを呼び出すときに、クラスの完全修飾名が返されることがあります。しかし、いくつかのクラス/構造体(Int32のような)は、オブジェクトに対応する文字列(整数の値)を返します。これはInt32クラスがToString()メソッドをオーバーライドすることを意味し、完全修飾名を返すクラスはそれをオーバーライドせず、代わりにベースの(Objectの)ToString()メソッドを呼び出しますか? Object.ToString()実装では、クラスの完全修飾名が返されますか?.ToString()メソッドはどのように機能しますか?

+6

はい、あなたは正しいです。 – MarcinJuraszek

+0

どうしますか?それは "私の理解は正しいのですか?" –

答えて

17

私はToStringメソッドを呼び出すとき時にはそれは、コールを受信したオブジェクトの実行時の型の完全修飾名を返します。

正しいです。

System.Int32のような種類の場合、ToStringは文字列に変換された受信者の値を返します。

正しいです。

System.Int32構造体はToStringメソッドをオーバーライドしますか?

はい。

は、そのToString方法完全修飾型名を返しないオーバーライドToString他の種類のですか?

おそらくそうです。そうです。もちろん、メソッドをオーバーライドして、オーバーライドするメソッドを基本クラスのメソッドとまったく同じにすることもできますが、それは少し意味がありません。

だから、そのような場合には、ToStringを呼び出すと、単に完全修飾名を返し、ToStringSystem.Object実装を呼び出し?

正しいです。

あなたはこの仕組みがしっかりと把握されているようです。私の唯一の訂正はSystem.Int32構造であり、クラスではないことに注意することです。

+0

私は今編集しました。 – deen

+5

@Ala:なぜ誰かがあなたの質問を否定したのですか?おそらく** ToStringメソッド**のドキュメントページで答えられているからです。メソッドに関する質問がある場合は、そのメソッドのドキュメントを読んでみてください。あなたの質問に答えることができない場合は、Webサイトまたはこのサイトで回答を探してみてください。あなたの質問に答えるために、忙しい一日のうちに時間を取るように人々に依頼するのではなく、まず基本的な、最小限のレベルの研究をしてください。 –

+0

私はあなたを得ませんでした。あなたはそれぞれの行にそれぞれ答えましたか?これは私が期待した回答者でした – deen

8

あなたはあなたの質問に対する回答を検索しようとしましたか?

http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx

ToStringメソッドは、.NET Frameworkの主要なフォーマット方法です。 はオブジェクトを文字列表現に変換して、表示には が適しています。 ToStringメソッドのデフォルトの実装は、次の例 示すように、オブジェクトの種類の完全 修飾名を返す(.NET Frameworkで サポートのフォーマットについては、書式設定タイプを参照。)

。オブジェクトは、.NET Frameworkの すべての参照型の基底クラスであるので

は、この動作は、ToStringメソッドを オーバーライドしない参照型によって継承されます。次の例は、これを示しています。 すべてのObjectメンバーのデフォルトの 実装を受け入れるObject1という名前のクラスを定義します。そのToStringメソッドは オブジェクトの完全修飾型名を返します。

0

C#のToString()メソッドに関する点はほとんどありません。

  1. ToString()メソッドは、基本System.Objectクラスで定義されているため、使用するすべての型とパラメータで使用できます。

  2. system.objectベースクラスによって提供されるToString()のデフォルトの実装では、名前空間を含む型の完全な名前が与えられます。

  3. デフォルト実装を使用しない場合は、ToString()メソッドをオーバーライドできます。はいToString()メソッドはオーバーライド可能です。そして、あなたはそれを無効にしますか?デフォルトの実装をしたくないクラスでオーバーライドします。

関連する問題