.NET中的字符串比较

时间:2012-02-17 15:07:05

标签: c# .net vb.net string comparison

(.NET)

之间有什么区别(以bref为单位)
myString == otherString

myString.CompareTo(otherString) == 0

6 个答案:

答案 0 :(得分:8)

没有区别,除非myString是null,在这种情况下myString.CompareTo(otherString)会抛出错误(NullReferenceException)。此外,使用CompareTo==慢一点。

当您有兴趣知道字符串是否在另一个字符串之前或之后按字母顺序排序时,仅使用CompareTo。例如,"Car".CompareTo("Cat")返回-1,因为按字母顺序排序时,“Car”在“Cat”之前。

答案 1 :(得分:2)

CompareTo 应用于评估排序。可能由于某种原因,两个字符串在排序时比较相同,但不应被视为相等(即==Equals可能返回false)。

引用documentation

  

将此实例与指定的对象或String进行比较,并返回一个整数,该整数指示此实例在排序顺序中是先于,跟随还是出现在同一位置中作为指定对象还是字符串。 / p>

强调添加 - 注意它表示两个对象相等。

答案 2 :(得分:1)

假设你的意思是

myString == otherString

没有明显的区别。

答案 3 :(得分:1)

假设你的意思是==而不是=

CompareTo实现IComparable接口。它返回一个整数。

答案 4 :(得分:1)

来自here

  

CompareTo方法主要用于排序或   按字母顺序排列的操作。主要时不应该使用它   方法调用的目的是确定是否有两个字符串   当量。要确定两个字符串是否相同,请调用   等于方法。

Equals方法更合适。从here开始,Equals==之间的区别在于Equals要求其参数为非空,而==则不需要。另外,==已实施以使用Equals,因此Equals将始终具有更好的效果。

答案 5 :(得分:0)

myString.CompareTo(otherString)方法的主要目的是用于排序或按字母顺序排列 操作。当主要目的是检查字符串是否相等时,不应该使用它。

要确定两个字符串是否相等,请调用Equals方法。“

当仅仅考虑相等时,最好使用.Equals而不是.CompareTo。因为我也认为编译器比==操作更快。