1. ホーム
  2. .net

[解決済み] StringComparison.OrdinalIgnoreCase と StringComparison.InvariantCultureIgnoreCase のどちらを使用するのが一般的でしょうか。

2022-04-16 09:36:01

質問

このようなコードがあります。

If key.Equals("search", StringComparison.OrdinalIgnoreCase) Then
    DoSomething()
End If

大文字小文字は気にしない を使うべきでしょうか? OrdinalIgnoreCase , InvariantCultureIgnoreCase または CurrentCultureIgnoreCase ?

解決方法は?

新しい.Net Docsでは、あなたの状況でどれを使うのがベストかを決めるのに役立つ表が用意されました。

MSDN の " から。 Microsoft .NET 2.0における文字列の使用に関する新しい推奨事項 "

要約: コード所有者が以前使用していた InvariantCulture 文字列の比較、大文字小文字の区別、ソートのために、新しい String は、Microsoft .NET 2.0 のオーバーロードを使用しています。 具体的には、文化にとらわれず、言語的に無関係に設計されたデータ のどちらかを使用してオーバーロードを指定する必要があります。 StringComparison.Ordinal または StringComparison.OrdinalIgnoreCase のメンバーは、新しい StringComparison の列挙があります。これらは、以下のようなバイトごとの比較を強制します。 strcmp これは、本質的に記号的な文字列の言語的解釈によるバグを避けるだけでなく、より良いパフォーマンスを提供します。