C#において、文字列型同士の等価演算子==、不等価演算子!=による比較では、参照の比較ではなく文字列の等価性の比較が行われます。 つまり==演算子では、両辺のインスタンスが異なっていても文字列として等しければ両辺は等しいものとして扱われます。

等価演算子による文字列同士の等価性の比較
using System;

class Sample {
  static void Main()
  {
    string s1 = "foo";
    string s2 = "bar";
    string s3 = "foo";

    Console.WriteLine(s1 == s1);
    Console.WriteLine(s1 == s2);
    Console.WriteLine(s1 == s3);
  }
}
実行結果
True
False
True

文字列の比較については、文字列の探索・比較 §.文字列の比較・等価性の検証で詳しく解説します。 参照の比較と値の比較の違いについては値型と参照型 §.同値性・同一性の比較を参照してください。