2010-02-24 94 views

回答

29

匿名類型是不可變的設計。

匿名類型是爲了保存值,而表示值的類型不應該是可變的。

此外,它會使它們在字典中不可靠,因爲哈希碼在創建後可能會更改。
許多LINQ方法都使用字典,特別是在延遲評估時,LINQ具有可變類型會導致細微的神祕錯誤。

+0

這很快:-) Thnx – Marko 2010-02-24 19:02:59

+7

請注意,VB中的匿名類型允許部分變異。在VB中,你可以指出匿名類型的哪些部分是可變的;生成的代碼將不會使用可變位作爲散列碼/等號的一部分,因此您不會收到「在字典中丟失」問題。我們決定不在C#中實現這些擴展。 – 2010-02-24 19:48:47

+0

我不知道;謝謝。 – SLaks 2010-02-24 20:02:54