Warum vergleicht die Equals-Implementierung für anonyme Typen Felder?

Ich frage mich nur, warum Designer der Sprache beschlossen haben, Equals auf anonymen Typen zu implementieren, ähnlich wieEquals auf Werttypen. Ist es nicht irreführend?

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void ProofThatAnonymousTypesEqualsComparesBackingFields()
{
    var personOne = new { Name = "Paweł", Age = 18 };
    var personTwo = new { Name = "Paweł", Age = 18 };

    Console.WriteLine(personOne == personTwo); // false
    Console.WriteLine(personOne.Equals(personTwo)); // true
    Console.WriteLine(Object.ReferenceEquals(personOne, personTwo)); // false

    var personaOne = new Person { Name = "Paweł", Age = 11 };
    var personaTwo = new Person { Name = "Paweł", Age = 11 };
    Console.WriteLine(personaOne == personaTwo); // false
    Console.WriteLine(personaOne.Equals(personaTwo)); // false
    Console.WriteLine(Object.ReferenceEquals(personaOne, personaTwo)); // false
}

Auf den ersten Blick sollten alle gedruckten Booleschen Werte falsch sein. Aber Zeilen mitEquals Aufrufe geben unterschiedliche Werte zurück, wennPerson Typ wird verwendet, und anonymer Typ wird verwendet.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage