Why String behaves like value type while using ==
<p>want to know why String  behaves like value type while using ==.</p>

<pre><code>         String s1 = "Hello";
        String s2 = "Hello";
        Console.WriteLine(s1 == s2);// True(why? s1 and s2 are different)
        Console.WriteLine(s1.Equals(s2));//True
        StringBuilder a1 = new StringBuilder("Hi");
        StringBuilder a2 = new StringBuilder("Hi");
        Console.WriteLine(a1 == a2);//false
        Console.WriteLine(a1.Equals(a2));//true
</code></pre>

<p>StringBuilder and String behaves differently with == operator. 
Thanks.</p>
