私は愚かに見えるかもしれない質問があります。 ToStrin()、GetHashCode()、GetType()などのメソッドを基本オブジェクト型に定義する背後には、何らかの理由がありますか。これらのメソッドは、内部的に.Netフレームワークによってあらゆる目的で使用されますか?このデザインの背後にあった考えを知りたいだけなのです。ToString()、GetHashCode()、GetTypeなどのメソッドを持つオブジェクト型の背後にある理由は何ですか
おかげで、 sveerap
私は愚かに見えるかもしれない質問があります。 ToStrin()、GetHashCode()、GetType()などのメソッドを基本オブジェクト型に定義する背後には、何らかの理由がありますか。これらのメソッドは、内部的に.Netフレームワークによってあらゆる目的で使用されますか?このデザインの背後にあった考えを知りたいだけなのです。ToString()、GetHashCode()、GetTypeなどのメソッドを持つオブジェクト型の背後にある理由は何ですか
おかげで、 sveerap
これらのメソッドは、すべてのオブジェクトが必要とする最小限のものとみなされていました。それらをSystem.Object
クラスに導入することにより、.NET内のすべてのオブジェクトで使用できます。
それぞれが目的を果たす:
Equals
とReferenceEquals
はGetHashCode
を確認平等に使用されるオブジェクトはハッシュコレクションにGetType
を使用することを可能にするがToString
可能に動作するように反射するために必要とされます型に関係なくすべてのオブジェクトが文字列形式で表現され、非常に便利ですFinalize
リソースは、ガベージコレクタMemberwiseClone
によって適切に処理することを可能にするオブジェクトの浅いコピーはあなたがそれらを他を置く応答に感謝し、それは基本的な方法と理由のほとんどをカバーします。BrennanとPandaWoodの文字列には、より詳細な説明があります – sveerap
応答に感謝します。みんなが役に立つ意見を共有しているので、私が複数の回答に投票することができれば、良いことになりました。 – sveerap
GetHashCode()はオブジェクトの比較には使用されませんが、等しいオブジェクトには等しいハッシュコードが割り当てられます。 –
オブジェクト比較のために使用される()反射に
編集:実際には、C#は最新のインカネーションでダックタイピングをサポートしています。しかし、これは反射のオーバーヘッドを招き、ToStringと企業は、誰もがC#のダックタイピングに優しいと思っていたずっと前から定義されていました。
を生成することが可能になりますか? –
@Anonインターフェイスでは?関連のある質問:http://stackoverflow.com/questions/1561617/edited-why-does-object-tostring-exist –