1

文字列を比較するために' ==' 演算子とメソッドを使用する際にグローバリゼーションの問題はありますか? string.Equals()はいの場合、これを回避するための解決策は何ですか?

4

2 に答える 2

5

ではString.Equals、使用できますStringComparison.InvariantCultureIgnoreCaseまたはStringComparison.InvariantCultureでは、==それはできません。

あなたは見るべきです:トルコ語のİ問題となぜあなたが気にする必要があるのか

同じ記事のコード スニペット:

using System;
using System.Globalization;
using System.Threading;
internal class Program
{
    private static void Main(string[] args)
    {      
        Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
        const string input = "interesting";

        bool comparison = input.ToUpper() == "INTERESTING";

        Console.WriteLine("These things are equal: " + comparison);
        Console.ReadLine();
    }
}

上記は、演算子falseを使用した等しい比較の a を返します==

上記のコードで次の行を試すことができます

 bool Comparison2 = input.Equals("INTERESTING",
                                  StringComparison.InvariantCultureIgnoreCase);

そして結果はtrue

于 2012-11-07T06:13:54.053 に答える
2

==演算子とオーバーロードの.Equals(string)両方で.Equals(object)、序数に基づく文字列比較が使用され、カルチャに依存しません。

これは、.CompareTo文化に依存するものとは異なります。

于 2012-11-07T06:13:05.427 に答える