5

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

4

4 に答える 4

19

メソッドを呼び出すとToString、呼び出しを受け取ったオブジェクトのランタイム型の完全修飾名が返されることがあります。

正しい。

ただし、 などの一部の型では、レシーバーの値を文字列に変換しSystem.Int32ToString返します。

正しい。

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

はい。

ToStringメソッドが完全修飾型名を返す他の型はオーバーライドされませんToStringか?

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

そのような場合、呼び出しは完全修飾名を返すの実装を呼び出すToStringだけですか?System.ObjectToString

正しい。

これがどのように機能するかをしっかりと把握しているようです。私の唯一の修正は、それがclassではなくstructであることに注意することSystem.Int32です。

于 2012-04-09T15:47:25.187 に答える
7

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

ToString は、.NET Framework の主要な書式設定メソッドです。オブジェクトを表示に適した文字列表現に変換します。(.NET Framework での書式設定のサポートについては、「型の書式設定」を参照してください。)

次の例に示すように、ToString メソッドの既定の実装は、オブジェクトの型の完全修飾名を返します。

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

于 2012-04-09T15:45:39.193 に答える