95912


なぜ `Parse(変換したい文字)` と同じように `ToString(変換したい数値)` ではなくて  
`(変換したい数値).ToString()` という形で「引数でデータを受け取らないのに」変換できているのですか？

変換するメソッドの場合は次のコードのようなら理解できるのですが

[code]

    public string ToString(int i)
    {   
        処理;
        return str;
    }
    
[/code]

調べても定義を見てもわからなかったので、自分で変換メソッド定義して理解しようとしたのですがクラスのコンストラクタの引数に変換したい数値を渡して
`ToString()` で使用するぐらいしか思いつきませんでした。ですが実際は `(変換したい数値).ToString()`
の一文のみでそういったやりとりをしていません。


CC BY-SA 4.0
2023-08-10T05:40:11.707
95911
2023-08-10T06:44:26.920
2023-08-10T06:10:54.433
3060
59437
question
c#
C# で ToString() と Parse() の仕組みの違い


以下の Microsoft ドキュメントは参考になりませんか？

Object クラス  
<https://learn.microsoft.com/ja-jp/dotnet/api/system.object?view=net-7.0>

Object.ToString メソッド  
<https://learn.microsoft.com/ja-
jp/dotnet/api/system.object.tostring?view=net-7.0>

関係するところを抜粋すると:

Object クラスは、.NET の全クラスの基本クラスであり、型階層のルートです。

.NET では、すべてのクラスが Object から派生するため、システム内のオブジェクトは、Object
クラスで定義されているすべてのメソッドを使用できます。派生クラスでは、これらのメソッドのうち、次のメソッドをオーバーライドできます。

・ToString - クラスのインスタンスの説明テキスト文字列をユーザーが判読できる形で生成します。

実装元へのメモ:  
型に対して有効な値を返すようにするため、派生クラスでこのメソッドをオーバーライドできます。たとえば Int32
などの基本データ型は、オブジェクトが表す値を文字列として返すために ToString を実装します。

ということで、質問の、

> なぜ Parse(変換したい文字) と同じように ToString(変換したい数値) ではなくて(変換したい数値).ToString()
> という形で「引数でデータを受け取らないのに」変換できているのですか？

に対する答えは、そういう実装になっているからということになります。

なお、Int32 の場合は「(変換したい数値).ToString()」だけではなくて、以下の画像のようなオーバーロードがあります。

[![画像の説明をここに入力](https://i.stack.imgur.com/uKAdz.jpg)](https://i.stack.imgur.com/uKAdz.jpg)


CC BY-SA 4.0
2023-08-10T06:03:43.327
95912
2023-08-10T06:44:26.920
2023-08-10T06:44:26.920
51338
51338
95911
answer