「テセウスの船 第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
が返ってきます。



この == 式の仕様。
誰しも絶対に一回はひっかかる問題だね。^^;