2016-12-15 81 views
17

看着新的C#7.0 ValueTuples,我想知道他們是否會完全替代Anonymous Types。我知道ValueTuples是結構,因此表現與Anonymous Types有些不同,它們是類。但是,我沒有看到使用案例,我寧願使用Anonymous Type而不使用ValueTupleC#7.0 ValueTuples與匿名類型

是否有任何使用Anonymous Type仍然比在C#7.0中使用ValueTuples有益的用例?

+0

[匿名類型和元組]可能的重複(http://stackoverflow.com/questions/2613829/anonymous-type-and-tuple) –

+7

@SørenD.Ptæus這個問題是關於'Tuple'而不是C# 7.0'ValueTuple'。 「ValueTuple」與「Tuple」有很大不同。 –

+0

您是否嘗試過在Linq查詢中使用ValueTuples(我手邊沒有C#7編譯器來試用它) – Console

回答

12

匿名類型是不可變的,元組不是。這反映在匿名類型暴露屬性,元組暴露字段的事實中。數據綁定幾乎總是需要屬性。

大量的現有代碼僅適用於引用類型,而不適用於值類型。特別想到的是Entity Framework中的預測:對價值類型的預測根本沒有實現。

+1

要回答這個問題需要大量的信息。但是,我不認爲它太寬泛。這可能是[社區維基](http://stackoverflow.com/help/privileges/community-wiki)的一個很好的候選人。 –

+0

雖然是一個很好的答案,但我不明白它是如何回答OP的問題的:「是否有任何用例會被其他用例使用?」。 –

+3

@YuvalItzchakov呃?如果使用需要屬性的數據綁定,則需要具有屬性的類型,這意味着您不能使用新的元組。如果你在EF中使用投影,你需要使用引用類型,你不能使用新的元組。這不是給出兩種非常特殊的情況,你可以使用匿名類型,但不能使用新的元組? – hvd