C# での大文字と小文字を区別しない文字列比較
C# で 2 つの文字列を比較する場合、大文字と小文字を区別しない処理は一般的な要件です。いくつかのオプションが利用可能ですが、それぞれに独自のパフォーマンスに関する考慮事項があります。 2 つの一般的なメソッドを検討し、より効率的な代替メソッドを提供してみましょう。
メソッド 1: String.Equals with StringComparison.InvariantCultureIgnoreCase
このメソッドは簡単ですが、速度が遅くなる可能性があります。 InvariantCultureIgnoreCase 基準を使用して文字列を比較します。これにより、大文字と小文字は区別されませんが、文化的な考慮事項のオーバーヘッドが生じます。
string val = "AStringValue"; if (val.Equals("astringvalue", StringComparison.InvariantCultureIgnoreCase))
方法 2: String.ToLowerCase with ==
この方法は文化的処理を排除することで高速に見えますが、欠点もあります。文字列を小文字に変換すると、新しい文字列インスタンスが作成され、追加のメモリが消費され、大きな文字列を扱うときにパフォーマンスに影響を与える可能性があります。
if (val.ToLowerCase() == "astringvalue")
より効率的な代替案: String.Equals with StringComparison.OrdinalIgnoreCase
最適な解決策は、 StringComparison.OrdinalIgnoreCase フラグ:
string.Equals(val, "astringvalue", StringComparison.OrdinalIgnoreCase)
順序比較は文化的な考慮事項をバイパスし、大幅に高速化されます。ただし、両方の文字列が同じ文字エンコーディングを使用していることを前提としており、そうでない場合は予期しない結果が生じる可能性があります。
同じ文字列を他の文字列と頻繁に比較する場合は、事前に小文字に変換すると効率が向上します。ただし、具体的なメリットを確実にするために、最適化を行う前にコードを測定、テストすることを忘れないでください。
以上が大文字と小文字を区別せずに C# で文字列を効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。