私はプロジェクトで作業しており、その一部については2つの文字列を比較する必要があります。 私はそれらを比較しようとするたびに、私は常に偽を得る(==, .Equals(), String.Equals()
- 完全に同一の2つの文字列を持っていても、それらはすべてfalseを返す)C#String.Equalsは同じ文字列でfalseを返します
ここは私のコードの一部です。 「AutoIncrementTag」 - 私のforeach
をデバッグするときに
var tagType = JObject.Parse(json).First.First.ToString();
foreach (var type in assembly.ExportedTypes)
{
var name = tagType;
var currentType = type.Name;
var a = name.Length;
var b = currentType.Length;
var result = currentType == name;
var result1 = currentType.Equals(name);
var result2 = String.Equals(name, currentType, StringComparison.CurrentCulture);
var result3 = String.Equals(name, currentType, StringComparison.InvariantCulture);
var result4 = String.Equals(name, currentType, StringComparison.Ordinal);
var result5 = String.Equals(name, currentType, StringComparison.CurrentCultureIgnoreCase);
}
は今、私は最終的には名前とcurrentType
の両方が同じ文字列に等しい点に到達します。同じ点では、長さ(aとb)は16文字です。
//name - "AutoIncrementТаg"
//currentType - "AutoIncrementTag"
//a - 16
//b - 16
// result - false
// result1 - false
// result2 - false
// result3 - false
// result4 - false
// result5 - false
と戻り偽下記の比較のALL:
これは、デバッグ出力は次のようになります。
"name"とcurrenTypeの両方から新しい文字列を作成しようとしました。そして何も。
私は本当にここにこだわっています。どのように2つの同一の文字列(同じ長さ、隠された文字もない)は、あらゆる種類の比較でfalseを返すことができます。
を、文字列が同一ではありません。デバッグ時の結果の価値は? –
検証可能な例を提供できますか?平面コードだけでは、文字列が等しくないようです。 – Link
私の問題を解決するデバッグ出力を表示するために私の投稿を編集しました。私はそれが私の問題を示すことを願っています(値はすべてデバッグウィンドウからコピー/貼り付けされます) – Kobek