classとstruct
この週末、classとstructについて考えていたがとってもモヤモヤしている。
現段階では、うまく結論付けることができなかった。
とりあえずわかったことをメモっておく。
オブジェクトの比較
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
【結論】
ポインタの比較をしたい場合はSystem.Object.ReferenceEqualsを使用する
それ以外の比較はoverrideによって変更可能なため値の比較かポインタの比較か
わからない
classとstructの使い分け
【問題】ユーザー定義型を作成する際にクラスと構造体をどう使い分けるか?
比較の種類(値の比較orポインタの比較)で使い分けるか?
→比較の種類はEqualsのoverrideで決まる。クラス、構造体の使い分けとは無関係
例)System.String はクラスであるがEqualsでは値の比較を行っている
他にはパフォーマンスぐらいしか思いつかない
今のところパフォーマンスが問題になることはないのでstructの使用は見送ることにする