2

プログラムによる文字列を扱っているため、string.compare だけを使用してはならないというヒントを TL から得ました。彼が本当に言いたかったことは何ですか?文字列に関する文化的な情報はありますか? stringComparision.Ordinal を使用する利点は何ですか?

4

2 に答える 2

2

比較オプションを指定しない場合、String.Compareメソッドはデフォルトで現在のカルチャ設定を使用してカルチャに依存する比較を行います。これは、その特定のカルチャのソート順を使用して文字が比較されることを意味します。

比較を指定するOrdinalと、文字はUnicode文字コードのみに基づいて比較されます。

序数比較を使用する利点の1つは、より高速であるということです。これは、多くの比較を行う場合に重要になります。

比較の結果が異なる例:

Console.WriteLine(String.Compare("å", "ä"));
Console.WriteLine(String.Compare("å", "ä", StringComparison.Ordinal));

出力:

-1
1
于 2013-03-22T12:56:01.200 に答える
1

文字列比較では、現在のカルチャ、つまりオペレーティング システムが持つカルチャが使用されます (Windows の地域設定に移動すると変更できます)。

これはmsdnからです:

比較では、現在のカルチャを使用して、大文字と小文字の規則や個々の文字のアルファベット順など、カルチャ固有の情報を取得します

文化を問題にしたくない場合は、次のようにいつでも比較を指定できます。

String.Compare("a", "a", StringComparison.InvariantCulture);
于 2013-03-22T12:46:05.017 に答える