• ベストアンサー

javaとC#のStringの違い

javaだと、Equals()を使わないとStringの比較ができないのですが、C#だとEquals()も==も使えます。 これはなぜでしょうか? C#では、Stringも基本データ型なのでしょうか?それとも中間言語にコンパイルされる際に==をEquals()に変換されているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

どちらでもなく、== という演算子が String に対して定義されています。内部的には静的版の Equals() を呼び出しているようですが。 http://msdn.microsoft.com/ja-jp/library/system.string.op_equality(v=vs.110).aspx C# には Java にはない演算子のオーバーロードという機能があります。 http://msdn.microsoft.com/ja-jp/library/ms228498(v=vs.90).aspx

satisfied999
質問者

お礼

演算子のオーバーロード!そんなことができるのですね!

その他の回答 (1)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>javaだと、Equals()を使わないとStringの比較ができないのですが、C#だとEquals()も==も使えます。 これはなぜでしょうか? 個人的な見解ですけど、C#はマイクロソフトが言語仕様を自由に拡張できる言語だと思っています。つまり、C#利用者が「この文法は不便だなあ」とか「こんな文法があれば便利だ」って思えば、それが可能になるように、マイクロソフトがどんどんとC#の仕様を拡張することができたということだと思っています。特にラムダ式の導入、varキーワード、匿名型など、.Net Frameworkの拡張、VisualStudioの拡張の相乗作用で、プログラミングが凄く楽になってきていると思います。 それに対して、Javaの言語仕様は、いろんな団体とかのしがらみがあって、そんなに勝手に変更・拡張できないからではないかと思います。また、そういう拡張がC#よりもJavaは難しいのではないか?という気も個人的には思っています(本当かどうかわかりませんが・・・)。

関連するQ&A