Avatar ·

En C# : quelle est la différence entre `==` et `Equals()` lors de la comparaison d'objets ?

Bonjour, collègues ! Je suis un développeur C# débutant et je suis confronté à une incompréhension. J'ai une classe simple Person avec deux propriétés : Name et Age. J'ai créé deux instances de cette classe avec les mêmes valeurs de champs. Quand je les compare avec `==`, le résultat est `false`. Mais si j'utilise la méthode `Equals()`, c'est aussi `false`. Je m'attendais à ce qu'elles soient égales, car les données correspondent. Voici le code : ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } } class Program { static void Main() { Person p1 = new Person { Name = "Alice", Age = 30 }; Person p2 = new Person { Name = "Alice", Age = 30 }; Console.WriteLine(p1 == p2); // false Console.WriteLine(p1.Equals(p2)); // false } } ``` Mais si je compare des strings ou des nombres, `==` fonctionne comme prévu : ```csharp string s1 = "hello"; string s2 = "hello"; Console.WriteLine(s1 == s2); // true int a = 5; int b = 5; Console.Writ