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
No answers yet.
Connectez-vous pour laisser une réponse
Blogs