Em C#: qual a diferença entre `==` e `Equals()` ao comparar objetos?
Olá, colegas! Sou um desenvolvedor C# iniciante e me deparei com uma dúvida. Tenho uma classe simples Person com duas propriedades: Name e Age. Criei duas instâncias dessa classe com os mesmos valores de campos. Quando as comparo com `==`, o resultado é `false`. Mas se usar o método `Equals()`, também é `false`. Eu esperava que fossem iguais, já que os dados coincidem. Aqui está o código:
```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
}
}
```
Mas se comparo strings ou números, `==` funciona como esperado:
```csharp
string s1 = "hello";
string s2 = "hello";
Console.WriteLine(s1 == s2); // true
int a = 5;
int b = 5;
Console.Writ
No answers yet.
Faça login para deixar uma resposta