为什么“\n”是真的不可以比较吗?

发布于 2024-11-30 08:02:59 字数 151 浏览 0 评论 0原文

请看这里的场景: http://social.microsoft.com/Forums/getfile/3600/ 为什么不匹配?

Look at the sceene here , please:
http://social.microsoft.com/Forums/getfile/3600/
why it's not matching?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞琼窗梦回ˉ 2024-12-07 08:02:59

编辑:好的,现在我们知道它是 XmlReader。 Value,它确实返回一个字符串,这绝对不是问题。我将把之前的答案留在下面以供将来参考。

我的猜测是,有一些“奇怪”的 Unicode 字符没有显示在调试器中......或者监视窗口的行为很奇怪。观察 xml.Value.ToCharArray() 将有助于显示这一点。

(顺便说一句,给 Dictionary<,> 参数命名 list 非常令人困惑......)

编辑:此外,使用支撑和缩进也会 让您的代码更易于理解...


我们目前无法确定,但我的猜测Value 属性的类型为 <代码>对象,而不是字符串。这意味着 ==!= 执行引用比较(记住,运算符是重载,而不是覆盖)。您想要以下多态行为:

if (xml.Value.Equals("\n"))

或者如果 xml.Value 可以合法地为 null:

if ("\n".Equals(xml.Value))

EDIT: Okay, now we know it's XmlReader.Value, which does return a string, that's definitely not the problem. I'll leave the previous answer below for future reference.

My guess is that there are some "odd" Unicode characters which don't show up in the debugger... or that the watch window is behaving strangely. Putting a watch on xml.Value.ToCharArray() would help to show that.

(As an aside, giving a Dictionary<,> parameter the name list is very confusing...)

EDIT: Additionally, using bracing and indentation would also make your code easier to follow...


We can't tell for sure at the moment, but my guess is that the Value property is of type object, not string. That means that == and != perform reference comparisons (operators are overloaded, not overridden, remember). You want the polymorphic behaviour of:

if (xml.Value.Equals("\n"))

or if xml.Value can legitimately be null:

if ("\n".Equals(xml.Value))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文