「テセウスの船 第5章 プログラミング (2025/03/22)」
『テセウスの船』問題 第五回目。


C#やJavaなどの(ポインタ型を持たない)モダン言語において
if (a==b)
と聞く時。
実は int,float,stringのようなプリミティブ型では
string a= "Hello";
string b = "Hello";
assert (a==b);
aとbは、別のメモリアドレスに作られた。別個体ですが。
値さえ同じならば
(a==b) → true
が返ってきます。
その一方で。newして生成されたオブジェクトなら
object a= new Class("Hello");
object b = new Class("Hello");
assert (a!=b);
aとbは別の個体なので、
(a==b) → false
が返ってきます。
この == 式の仕様。
誰しも絶対に一回はひっかかる問題だね。^^;