Anonyme Art und Tupel
Was ist der Unterschied zwischen anonyme Art und Tupel?
- Hier ist ein Artikel zu erklären, was Sie wollen: msdn.microsoft.com/en-us/vcsharp/ee957397.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist der Unterschied zwischen anonyme Art und Tupel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anonyme Typen haben damit die Eigenschaft Namen, die Sie tragen mehr Informationen, für Tupel, die Sie nicht haben. Können Sie keine anonymen Typen als Parameter und Rückgabewerte, obwohl, und Sie können mit Tupeln.
Ein Beispiel, wenn ein Tupel nett ist, ist, wenn Sie wollen, um mehrere Werte zurückgeben. @Petar Minchev erwähnt diesen link, die gibt ein gutes Beispiel.
Möchten Sie vielleicht eine
Find()
Methode, gibt sowohl einen index und den Wert. Ein weiteres Beispiel wäre die position in einem 2d-oder 3d-Ebene.Nur ein kleines update zu dieser Antwort, da C# 7 ist draußen in der wildnis. Tupel haben Superkräfte und kann jetzt manchmal ersetzen anonyme Typen und Klassen. Nehmen Sie zum Beispiel diese Methode, dass Sie akzeptiert und liefert Tupel mit benannten Eigenschaften.
Cool.
Ein Tupel ist nicht ein anonymer Typ, es ' s einen Namen geben. Sie können es verwenden, als eine Rückkehr geben oder eines Arguments einer Methode. Dieser code ist gültig:
Können Sie es nicht mit einem anonymen Typ, Sie würde zurückkehren müssen
System.Object
statt. In der Regel haben Sie bis zum Ende nutzen Reflexion über diese Objekte (oderdynamic
im .NET 4), um die Werte der einzelnen Eigenschaften.Ebenfalls, wie Brian erwähnt, die Namen der Eigenschaft auf ein
Tuple
fixiert sind - Sie sind immerItem1
,Item2
,Item3
und so weiter, in der Erwägung, dass mit einem anonymen Typ, den Sie wählen den Namen. Wenn Sie schreiben:Dann der anonyme Typ hat tatsächlich
ID
undName
Eigenschaften. Aber wenn Sie schreiben:Dann das resultierende Tupel hat einfach Eigenschaften
Item1
undItem2
.Item1
,Item2
" ist nicht mehr korrekt mit C# 7. Siehe @alex-dresko Antwort oben.Weiterer Punkt zu Gunsten von anonymen Typen wäre, dass Sie können leicht mehr als 8 Eigenschaften. Dies ist zwar machbar mit Tupeln, es ist nicht so schön.
oder schreiben Sie Ihre eigenen Tupel-Klassen.
Eine interessante ähnlichkeit zu beachten ist, dass beide Tupel und anonyme Typen geben, die Sie unwandelbarkeit und Gleichheit, Vergleichbarkeit (beide überschreibt
Equals
undGetHashCode
) basiert auf den Eigenschaften von Standard.