推しミネラルウォーターはありますか?

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

A 回答 (2件)

どちらでもなく、== という演算子が String に対して定義されています。

内部的には静的版の Equals() を呼び出しているようですが。
http://msdn.microsoft.com/ja-jp/library/system.s …

C# には Java にはない演算子のオーバーロードという機能があります。
http://msdn.microsoft.com/ja-jp/library/ms228498 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/07 07:32

>>javaだと、Equals()を使わないとStringの比較ができないのですが、C#だとEquals()も==も使えます。


これはなぜでしょうか?

個人的な見解ですけど、C#はマイクロソフトが言語仕様を自由に拡張できる言語だと思っています。つまり、C#利用者が「この文法は不便だなあ」とか「こんな文法があれば便利だ」って思えば、それが可能になるように、マイクロソフトがどんどんとC#の仕様を拡張することができたということだと思っています。特にラムダ式の導入、varキーワード、匿名型など、.Net Frameworkの拡張、VisualStudioの拡張の相乗作用で、プログラミングが凄く楽になってきていると思います。

それに対して、Javaの言語仕様は、いろんな団体とかのしがらみがあって、そんなに勝手に変更・拡張できないからではないかと思います。また、そういう拡張がC#よりもJavaは難しいのではないか?という気も個人的には思っています(本当かどうかわかりませんが・・・)。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報