匿名型の等価性

VBだと次のコードはFalse。

Sub Main()
    Dim v1 = New With {.A = "Test", .B = 2}
    Dim v2 = New With {.A = "Test", .B = 2}
    Console.WriteLine(Equals(v1, v2))
End Sub

でもC#だと次のコードはTrue。

static void Main(string[] args)
{
    var v1 = new { A = "Test", B = 2 };
    var v2 = new { A = "Test", B = 2 };
    Console.WriteLine(Equals(v1, v2));
}

調べたてみたらここに書いてあった。
(VB) http://msdn.microsoft.com/ja-jp/library/bb384767.aspx
(C#) http://msdn.microsoft.com/ja-jp/library/bb397696.aspx

Sub Main()
    Dim v1 = New With {Key .A = "Test", Key .B = 2}
    Dim v2 = New With {Key .A = "Test", Key .B = 2}
    Console.WriteLine(Equals(v1, v2))
End Sub

ということでKeyってつければよいことがわかってよかったよかった。