[.NET] string classのメソッドのうまい使い方

デバッグ中に見つけたmsdnのエントリ。
日本語版
.NET Framework で文字列を使用するためのベスト プラクティス
http://msdn.microsoft.com/ja-jp/library/dd465121.aspx

英語版
Best Practices for Using Strings in the .NET Framework
http://msdn.microsoft.com/en-us/library/dd465121.aspx

この記事の力点の一つはstring クラスのメソッドにはできるかぎりcultureを指定するべきだ、ということ。特に比較の際にstringの内容と合わせたComparisonMethodを指定しないと正しい比較にならない。
また、指定したほうがい良い理由の一つは、メソッドによってデフォルトの値が違っているからだ。CurrentCultureで動くメソッドと、StringComparison.Ordinalで動くメソッドがある。

言語非依存の記号などをstringとして比較する場合は、StringComparison.Ordinal を StringComparison.OrdinalIgnoreCase使う。OrdinalはStringをCharに分解し、それぞれを数値として比較する。

意外に思ったのは、stringを比較前に正規化するときにはString.ToUpperInvariantを使うべき、と言うこと。他のところでも、ToUpperInvariantが標準的と書かれている。しかし、その詳細は説明されていない。

また、比較と一致は使い分けよ、と繰り返し書いている。一致はSting.Equalsを使い、比較はCompareやCompareToを使う。Compareの戻り値がゼロかどうかを一致の判断基準にしてはならない。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。