Warum unterscheidet sich die Semantik von Equals() und ==, wenn anonyme Typen verglichen werden? Warum vergleicht man Werte und vergleicht die Referenzen? Was ist der Grund dafür?Gleichheit für anonyme Typen
6
A
Antwort
9
==
nicht Equals
nicht nennen, es sieht für ==
überladenen Operator. Da anonyme Typen den Operator ==
nicht überladen haben, verwendet C# einen Referenzvergleich dafür.
Aber mit Equals
vergleicht es Feldwerte. Deshalb unterscheiden sich die Ergebnisse zwischen ==
und Equals
.
Anonymous Types (C# Programming Guide)
Da die Equals und GetHashCode Methoden auf anonyme Typen sind in Bezug auf die Equals und GetHashCode Methoden der Eigenschaften definiert, zwei Instanzen desselben anonymen Typs sind nur gleich , wenn alle ihre Eigenschaften sind gleich.
Verwandte Themen
- 1. IQueryable für anonyme Typen
- 2. Gute Namenskonvention für anonyme Typen
- 3. Wie funktioniert die Gleichheit für numerische Typen?
- 4. Gleichheit für 2 Listen verschiedener Typen
- 5. anonyme Typen und Generika
- 6. Anonyme Typen klonen?
- 7. Anonyme Typen erstellen!
- 8. WCF und anonyme Typen
- 9. Anonyme Typen (Klassen-Features)
- 10. Anonyme Typen Alternative in Eloquent
- 11. LINQ Anonyme Typen + MVC Ansichten
- 12. JAXB: Anonyme einfache Typen wie Enums?
- 13. Sind anonyme Typen außerhalb von LINQ sinnvoll?
- 14. VB.NET vs C#: Anonyme Typen und intellisense
- 15. Gleichheit in Positionen in zwei Listen unterschiedlicher Typen finden
- 16. Überprüfung Gleichheit der Schnittstelle {}
- 17. Die Bedeutung von Tilde in Haskell-Typen (Typ Gleichheit)
- 18. Mögliche Verwendung für SoftReference mit Wert (Gleichheit) Gleichheit
- 19. Rückkehr anonyme Typen von Stored Procedure mit LINQ2SQL
- 20. Silverlight - LinqToEntities - Wie kann ich anonyme Typen zurückgeben
- 21. Umgang mit C-Bibliothek anonyme Struktur-Typen in C++
- 22. C# Feature Anfrage: implementieren Schnittstellen auf anonyme Typen
- 23. Fall Klasse Gleichheit für Arrays
- 24. scalaz.Equal für pfadabhängige Typen
- 25. Arbeiten mit Anonyme Typen mit Linq in VB, C#
- 26. Wie sollten anonyme Typen in C# verwendet werden?
- 27. Sind anonyme Typen in C# durch Reflektion zugänglich?
- 28. C# Anonyme Typen können nicht zugewiesen werden - es ist schreibgeschützt
- 29. Option Strenge und anonyme Typen gehen nicht zusammen?
- 30. Haskell: Warum funktioniert die Mustererkennung für Typen, ohne Gleichheit zu sein?
Vielen Dank! Unter dem Dach implementiert der C# -Compiler eine versiegelte Klasse für anonyme Typen. Der Grund, warum == Verweise vergleicht, macht für mich Sinn. Aber Equals(), die Werte für Referenztypen vergleichen, macht für mich keinen Sinn. – DBK
I obwohl nur String eine Ausnahme war, wenn es darum ging, Strings mit Equals() zu vergleichen. Im Fall von Strings ist dies jedoch sinnvoll. – DBK