<p>Comparing string in C# is pretty simple.  In fact there are several ways to do it.  I have listed some in the block below.  What I am curious about are the differences between them and when one should be used over the others?  Should one be avoided at all costs?  Are there more I haven't listed?  </p>

<pre><code>string testString = "Test";
string anotherString = "Another";

if (testString.CompareTo(anotherString) == 0) {}
if (testString.Equals(anotherString)) {}
if (testString == anotherString) {}
</code></pre>

<p>(Note: I am looking for equality in this example, not less than or greater than but feel free to comment on that as well)</p>

From MSDN:
"The CompareTo method was designed primarily for use in sorting or
  alphabetizing      operations. It should not be used when the primary
  purpose of the method call is to     determine whether two strings are
  equivalent. To determine whether two strings are    equivalent, call
  the Equals method."
They suggest using
```
.Equals
```
instead of
```
.CompareTo
```
when looking solely for equality.  I am not sure if there is a difference between
```
.Equals
```
and
```
==
```
for the
```
string
```
class.  I will sometimes use
```
.Equals
```
or
```
Object.ReferenceEquals
```
instead of
```
==
```
for my own classes in case someone comes along at a later time and redefines the
```
==
```
operator for that class.