■77521 / inTopicNo.21) |
Re[8]: Object の比較についての疑問 |
□投稿者/ WebSurfer (687回)-(2015/10/27(Tue) 10:04:58)
|
■No77520 (ミルク さん) に返信 > > 確実に理解しているかといわれると疑問ですけど > > 値型は変数が示す先にデータが保存されている。 > 参照型は変数が示す先にデータの保存領域が保存されているということぐらいです。
違うと言うことは理解されているようですが(確実な理解はググって調べていただく として)、最初の質問の object, "10"(string 型)は参照型、10 (int 型)は値型 というところは理解されていますか。
その理解があれば、最初の質問に対しては私の一番最初のレスで紹介した以下の 2 つ の記事が 100% 説明しています。
== 演算子 (C# リファレンス) https://msdn.microsoft.com/ja-jp/library/53k8ybth.aspx
ボックス化とボックス化解除 (C# プログラミング ガイド) https://msdn.microsoft.com/ja-jp/library/yz2be5wk.aspx
前者の記事の「使用例」の英文の説明(コメント)を見てください。
> obj1 = 10; > obj2 = 10;
は、Reference equality: different objects, same boxed value: False. と説明さ れているのと同じです。"boxed value" については紹介した記事の後者の方を読んで ください。obj1 と obj2 は異なるオブジェクトを指すことが理解できるはずです。
> obj1 = "10"; > obj2 = "10";
は、Compare string references, both constants have the same value, so string interning points to same reference: True.
と説明されているところと同じです。constants については No77511 他で他の回答者 の方が補足しているとおりで、前者の "10" と後者の "10" は同じオブジェクトとなり、 obj1 と obj2 は同じオブジェクトを指すことが分かるはずです。
|
|