Égalité basée sur la valeur
Contexte : Les enregistrements comparent tous leurs membres pour l’égalité, pas l’égalité de référence. Deux instances d’enregistrement sont égales si toutes leurs propriétés correspondent.
public record Point(int X, int Y);
var p1 = new Point(1, 2);var p2 = new Point(1, 2);Console.WriteLine(p1 == p2); // TrueConsole.WriteLine(ReferenceEquals(p1, p2)); // FalseComment cela fonctionne
Section intitulée « Comment cela fonctionne »Les enregistrements remplacent Equals(object) et GetHashCode() pour considérer tous les champs/propriétés. Ils implémentent également IEquatable<T>.
Égalité pour record struct
Section intitulée « Égalité pour record struct »Même sémantique de valeur, mais record struct utilise l’égalité structurelle similaire à record class.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Tests unitaires : L’égalité de valeur simplifie les assertions car vous pouvez comparer directement les instances attendues et réelles sans comparer chaque propriété.
Exemple : Dans xUnit, Assert.Equal(attendu, actuel) fonctionne immédiatement pour les enregistrements. Pas besoin d’écrire des comparateurs d’égalité personnalisés.