C#の文字列の比較判定について
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2010-04-15
文字列の比較は、どの言語でもよく使用されますが、言語によって比較の方法は違います。また、比較の方法が複数パターンあり、パフォーマンスなども気になるところです。
例えば、Java の場合は String の文字列比較は equals() や compareTo() メソッドを使います。戻り値が boolean の equals() の方が好みですが。インスタンスの場合は == で比較ができますが、基本は equals() や compareTo() メソッドを使うべきでしょう。
PHP の場合は、== で比較をしているソースをよく見かけますが、これはタブーで、strcmp() 関数か === の型を考慮した判定が理想です。そもそも型の概念が表面上はないスクリプト言語なので、そこを意識しておかないと厄介です。
C# も Java と同じく Equals() や CompareTo() メソッドで判定するのが一般的かと思っていたのですが、思わぬ落とし穴があることが判明しました。結果的には、C# の文字列比較は == を使うべきということです。詳しくは下記のサイトで確認して下さい。
・C# では文字列の比較に Equals を使うな
・[C#] 文字列の比較は Equalsメソッドではなく ==演算子で行う
[Java]
String s1 = "1";
String s2 = "2";
if (s1.equals(s2)) {
// 一致
}
[PHP]
$s1 = "1";
$s2 = "2";
if (strcmp($s1, $s2)) {
// 一致
}
[C#]
string s1 = "1";
string s2 = "2";
if (s1 == s2) {
// 一致
}
関連記事
上記の記事に関連する記事(最新の10件)です。


