我的一個項目和它的一部分,我需要比較兩個字符串工作假的。 我的問題是,每當我嘗試比較它們時,我總是會得到錯誤(==, .Equals(), String.Equals()
- 即使我有2個完全相同的字符串,它們都會返回false。)C#String.Equals返回上相同的字符串
這是我的代碼的一部分。
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);
}
現在調試我foreach
的時候,我最終會達到一個點,名稱和currentType
都等於相同的字符串 - 「AutoIncrementTag」。在同一點,它們的長度(a和b)相等 - 16個字符。
這是調試輸出的樣子:
//name - "AutoIncrementТаg"
//currentType - "AutoIncrementTag"
//a - 16
//b - 16
// result - false
// result1 - false
// result2 - false
// result3 - false
// result4 - false
// result5 - false
攀比和所有下面返回FALSE。
我甚至嘗試創建一個新的串出既有「名」和currenType的。沒事了。
我真的被困在這裏。兩個相同的字符串(相同的長度,所以沒有隱藏的字符)如何可以通過任何比較返回false。
如果'String.Equals'返回false,字符串是不相同的。調試結果的價值是什麼? –
你能提供一個可驗證的例子嗎?只是通過平面代碼,看起來你的字符串不相等。 – Link
剛剛編輯我的帖子以顯示麻煩我的調試輸出。我希望它能說明我的問題。 (這些值都是從調試窗口複製/粘貼的) – Kobek