C# の string


恥ずかしながらつい最近知ったのですが, C# では string オブジェクトの比較は == を使えば同じ文字列に対して true を返すそうです[A]

私のように Java から移った人は結構同じ勘違いをしているのではないかと思います。 Java だと同じ文字列でも参照が違えば == での比較は false になるので。

実際以下の 2 つの C# と Java のコードは違う結果を出力します。

System.Console.WriteLine("hoge" == "hoge");  // True
System.Console.WriteLine("hoge" == new string("hoge".ToCharArray()));  // True
System.out.println("hoge" =="hoge");  // true
System.out.println("hoge" == new String("hoge".toCharArray()));  // false

ということで C# の文字列比較はタイプエラーが素早く発見できる == 演算子を使用した方が良いということです[B]

脚注

  1. string (C# リファレンス) []
  2. http://www.ailight.jp/blog/kazuk/archive/2006/01/31/11043.aspx []