1. ホーム
  2. c#

[解決済み] ToLowerInvariant()の何が問題なのでしょうか?

2023-05-26 17:58:43

質問

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

var connectionString = configItems.
                Find(item => item.Name.ToLowerInvariant() == "connectionstring");

VS 2010のコード解析では、以下のように言われています。

警告 7 CA1308 。Microsoft.Globalization : メソッド内で ... 'string.ToLowerInvariant()' への呼び出しを String.ToUpperInvariant() に置き換えてください。

これはつまり ToUpperInvariant() の方が信頼性が高いということでしょうか?

どのように解決するのですか?

Google は、次のようなヒントを与えています。 CA1308: 文字列を大文字に正規化する

と書かれています。

文字列は大文字に正規化されるべきです。小文字に変換された一部の文字は、ラウンド・トリップすることができません。往復するとは、あるロケールから、文字データの表現が異なる別のロケールに変換し、変換後の文字から元の文字を正確に取り出すことを意味します。

つまり、そうです - ToUpperはToLowerよりも信頼性が高いのです。

将来的には、私は最初にググることをお勧めします - 私は投げられたすべてのFxCop警告のためにそうします;) 対応するドキュメントを読むのに大いに役立ちます ;)