2016-12-15 78 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