我在两个变量之间做一个运算,一个变量的值是"<def",另一个变量的值是"<def"。
Dim str1 = "<test"
Dim str2 = "<test"
Dim different = str1<>str2当程序运行时,变量different被设置为false。如果我将鼠标停在该行上并将鼠标放在比较上,datatip将显示‘`str<>str2| True ',如果我将表达式放在监视窗口中,则值为True。但是在语句执行之后,变量different会是False吗?
这里发生什么事情?编译器中的错误还是visual studio中的错误?
发布于 2018-04-21 20:35:17
VB.NET从VB6继承了几个文件/项目设置,其中之一是问题:选项比较文本/二进制。
为了与VB6和VB.Net设计理念保持一致,VB.Net对待字符串比较的方式与对待其他引用类型的方式不同。具体地说,比较字符串不仅仅是一个简单的引用检查,而是使用Microsoft.VisualBasic.CompilerServices.Operators.CompareString.完成的这样做的主要目的是提供直观和一致的体验。此方法接受3个参数、2个字符串和一个布尔值。布尔值由Option Compare设置的值确定。如果为真(选项比较文本),则执行大小写和unicode INsensitive比较。
简而言之,使用选项比较文本"s"="S"和"<def" = "<def",在我的项目中它被设置为Text。
一个网络小提琴:https://dotnetfiddle.net/rknrLo
https://stackoverflow.com/questions/49920796
复制相似问题