c# list 自定义类 相等
时间: 2023-06-17 20:05:37 浏览: 121
C# - 实现自定义相等比较器
如果你想在C#中比较两个自定义类的相等性,你需要覆盖该类的Equals()和GetHashCode()方法。Equals()方法比较两个对象是否相等,GetHashCode()方法返回一个哈希码,用于在哈希表中查找对象。
以下是一个示例类:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
// Check for null values and compare run-time types.
if (obj == null || GetType() != obj.GetType())
return false;
Person p = (Person)obj;
return (Name == p.Name) && (Age == p.Age);
}
public override int GetHashCode()
{
int hash = 17;
hash = hash * 23 + Name.GetHashCode();
hash = hash * 23 + Age.GetHashCode();
return hash;
}
}
```
在这个示例中,Equals()方法比较两个Person对象的Name和Age属性是否相等。GetHashCode()方法使用Name和Age属性的哈希码来生成一个哈希码,用于在哈希表中查找对象。
你可以使用List.Contains()方法来检查一个Person对象是否在List<Person>中:
```csharp
List<Person> people = new List<Person>();
people.Add(new Person { Name = "John", Age = 30 });
people.Add(new Person { Name = "Jane", Age = 25 });
Person personToFind = new Person { Name = "John", Age = 30 };
bool containsPerson = people.Contains(personToFind);
```
在这个示例中,containsPerson变量将为true,因为people列表中包含一个Name为"John",Age为30的Person对象。
阅读全文