2016-12-15 10 views
17

新しいC#7.0 ValueTuplesを見ると、Anonymous Typesを完全に置き換えるかどうか疑問です。私はValueTuplesが構造体であることを理解しているので、クラスであるAnonymous Typesとは少し違った振る舞いをしています。しかし、ValueTupleを超えてAnonymous Typeを使用することを好むユースケースはありません。C#7.0 ValueTuplesと匿名のタイプ

Anonymous Typeを使用すると、C#7.0でValueTuplesを使用するよりも有益なユースケースはありますか?

+0

[匿名の型とタプル]の可能な複製(0120)を参照してください。 –

+7

@SørenD.Ptæusその質問は 'タプル'は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 Eh?プロパティが必要なデータバインディングを使用する場合、プロパティを持つ型が必要です。つまり、新しいタプルは使用できません。 EFで投影法を使用する場合は、参照タイプを使用する必要があります。新しいタプルは使用できません。これは、匿名型を使用できる2つの非常に特殊なケースをどのようにして提供するのではなく、新しいタプルを使用しないのですか? – hvd