• ベストアンサー

C#で char型とstring型の比較で Equalsでハマりました。 

C#で char型は値型でstring型は参照型ですがこの比較を正しく行うにはどうしたらよいでしょうか? string s = "0123456789"; Console.WriteLine(s[0]); Console.WriteLine("0".Equals(s[0]) ? "true" : "false"); で、falseなのは驚きでした。 Equalsを鵜呑みにしていました。 コンパイルできたので今まで気づきませんでした。 詳しい方、教えて頂けますか?

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

  • ベストアンサー
回答No.1

Console.WriteLine( '0' == s[0] ? "true" : "false");

hox123
質問者

お礼

さらっと答えられましたが、どうしてEqualsを使わないのでしょうか? 良く本で「Equalsを使え」とか書いているのですが、 失礼ですが、こう書いていればとりあえず安全という次善の策でしょうか?

その他の回答 (2)

回答No.3

> どうしてEqualsを使わないのでしょうか? == で比較できるし、その方が明確なのに なぜ Equals を使うのですか? > 良く本で「Equalsを使え」とか書いているのですが それは何故か、理解していますか? 本にはその理由に何と書かれていますか?

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

ヒント 質問の比較物とNo1の比較物 (主に括り方)

hox123
質問者

お礼

ありがとうございます。 初歩的なミスでしたね。 コンパイラに頼る初心者の誤りでした。

関連するQ&A