C#判断list所有存储对象是否相等,详细举例说明
时间: 2023-12-07 10:05:39 浏览: 26
假设我们有一个存储`Person`对象的List,需要判断其中所有对象是否相等。`Person`对象具有`Name`和`Age`两个属性。
```csharp
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
我们可以使用上述两种方法进行判断。
方法一:使用LINQ中的`All()`方法
```csharp
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 20 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 30 }
};
bool allEqual = people.All(x => x.Name == people[0].Name && x.Age == people[0].Age);
Console.WriteLine(allEqual); // false
```
方法二:重载`Equals()`方法
```csharp
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
Person other = (Person)obj;
return (Name == other.Name) && (Age == other.Age);
}
}
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 20 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 30 }
};
bool allEqual = people.All(x => x.Equals(people[0]));
Console.WriteLine(allEqual); // false
```
注意,在重载`Equals()`方法时,还需要重载`GetHashCode()`方法,以确保在使用哈希表等数据结构时,对象的相等性能够被正确判断。