在C#中:比较对象时`==`和`Equals()`有什么区别?
大家好!我是一名初学C#的开发者,遇到了一个困惑。我有一个简单的Person类,包含两个属性:Name和Age。我创建了这个类的两个实例,字段值相同。当我用`==`比较它们时,结果是`false`。但如果使用`Equals()`方法,结果也是`false`。我本以为它们会相等,因为数据是相同的。代码如下:
```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
}
}
```
但如果我比较字符串或数字,`==`就能正常工作:
```csharp
string s1 = "hello";
string s2 = "hello";
Console.WriteLine(s1 == s2); // true
int a = 5;
int b = 5;
Console.WriteLine(a == b); // true
```