在c#中比较字符串是非常简单的。事实上有几种方法可以做到这一点。我在下面列出了一些。我好奇的是它们之间的区别,以及什么时候应该使用其中一种?是否应该不惜一切代价避免?还有其他我没有列出的吗?
string testString = "Test";
string anotherString = "Another";
if (testString.CompareTo(anotherString) == 0) {}
if (testString.Equals(anotherString)) {}
if (testString == anotherString) {}
(注:我在这个例子中寻找平等,不小于或大于,但也可以自由评论)
正如Ed所说,CompareTo用于排序。
然而,. equals和==之间是有区别的。
==本质上解析为以下代码:
if(object.ReferenceEquals(left, null) &&
object.ReferenceEquals(right, null))
return true;
if(object.ReferenceEquals(left, null))
return right.Equals(left);
return left.Equals(right);
原因很简单,下面的代码会抛出异常:
string a = null;
string b = "foo";
bool equal = a.Equals(b);
而下面这些则不会:
string a = null;
string b = "foo";
bool equal = a == b;