En général, "System.Object" implémente "Equals". Lorsque j'implémente l'interface IEquatable, je peux donner une définition personnalisée (je le crois) à mes "Equals".
Ainsi, l'implémentation de la classe professeur est égale à
class Professor:System.Object,IEquatable
Puisqu'il existe des définitions différentes de System.Equals et de IEquatable's Equals, pourquoi C# n'a-t-il pas signalé d'erreur ? parce que je ne surcharge pas "Equals" et que je ne cache même pas "Equals" en utilisant le nouveau mot-clé.
class Professor : IEquatable<Professor>
{
public string Name { get; set; }
public bool Equals(Professor cust)
{
if (cust == null) return false;
return cust.Name == this.Name;
}
}