1
237
以下是这些功能如何工作的规则:
只需检查引用是否相同,即,它不仅仅是两个具有相同内容的字符串,而是将字符串对象与自身进行比较。 请注意,对于上面使用方法调用的选项,存在具有更多选项的重载来指定如何进行比较。
|
2
74
从MSDN:
他们建议使用
|
3
50
Reflector 是你的朋友:-)
精确匹配: 编辑:我以前总是使用==运算符,其原理是在Equals(string,string)内部使用object==运算符来比较对象引用,但是strA.Equals(strB)似乎比string.Equals(strA,strB)、strA==strB和string.CompareOrdinal(strA,strB)总体上快1-11%。我用秒表对相同/不同长度和不同尺寸(1B到5MB)的固定/非固定字符串值进行循环测试。
人类可读匹配(西方文化,不区分大小写):
人类可读的匹配(所有其他区域性,不区分大小写/重音/假名等,由CultureInfo定义):
与自定义规则(所有其他区域性)的可读匹配:
|
4
18
像 Ed 也就是说,CompareTo用于排序。
基本上
原因很简单,因为以下情况将引发异常:
以下情况不会:
|
5
15
关于字符串比较问题的良好解释和实践可以在本文中找到 New Recommendations for Using Strings in Microsoft .NET 2.0 Best Practices for Using Strings in the .NET Framework . StringComparison Enumeration 默认情况下,它们正在使用。有几种选择:
上述每种比较类型针对不同的用例:
字符串比较枚举 以及字符串比较方法的重载,自.NET 2.0以来就存在。 String.CompareTo Method (String)实际上是类型安全的实现吗 IComparable.CompareTo Method 用法:
String.Compare Method固定成员 String Class String.Equals Method从对象类重写,并为类型安全而重载。默认解释:序号。 请注意:
StringComparer class还有另一种处理字符串比较的方法,特别是用于排序的方法:
|
6
7
性能通常与99%的执行次数无关,但如果必须在循环中执行数百万次,我强烈建议您使用.Equals或==因为一旦它发现一个不匹配的字符,它就会抛出整个错误,但是,如果使用CompareTo,它将必须找出哪个字符比另一个字符小,从而导致性能时间稍差。 如果你的应用程序将在不同的国家运行,我建议你看看CultureInfo的含义,并可能使用.Equals。因为我只为美国编写应用程序(不在乎别人是否能正常工作),所以我总是使用==。 |
7
5
在这里列出的表格中,两者没有太大区别。
如果你考虑超载,事情就会变得不同。
由于它的多功能性,我发现我使用
|
8
2
需要注意的一大区别是,如果第一个字符串为null,则.Equals()将引发异常,而==则不会。
|
9
1
|
10
-1
阅读 . |
11
-9
顺便说一句,这将计算为false
a、 这里等于(b)是真的。 如果您将b更改为:
那么a.Equals(b)是假的,但是
a、 CompareTo(b)调用字符串的CompareTo函数,该函数比较指针处的值并返回<如果存储在a中的值小于存储在b中的值,则为0;如果a.Equals(b)为真,则返回0,并且>否则为0。不过,这是区分大小写的,我认为CompareTo可能有忽略大小写之类的选项,但现在没有时间查看。 我肯定我漏掉了一些东西,但我认为如果你需要更多的细节,这些信息应该足够开始实验了。 |
ridiculous_fish · std::是否保证短路? 2 年前 |
Hilde Schneider · php对我的if条件有问题 6 年前 |
user8188120 · 熊猫用np标记时间戳。其中比较 6 年前 |
Jarek · 与循环python数据帧中的下一个/上一个值进行比较 6 年前 |
vato · Bash脚本:测试浮点数是否在包括负数在内的特定范围内 6 年前 |