我的一个项目和它的一部分,我需要比较两个字符串工作假的。 我的问题是,每当我尝试比较它们时,我总是会得到错误(==, .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