c# list 自定义类 比较
时间: 2023-06-17 07:05:54 浏览: 142
C#实现自定义Dictionary类实例
在 C# 中,如果要比较自定义类的对象,可以实现 `IComparable` 或 `IComparer` 接口。
实现 `IComparable` 接口的类可以使用 `CompareTo` 方法来比较两个对象的大小关系。比较方法需要返回一个整数,表示两个对象的比较结果。如果第一个对象小于第二个对象,则返回负整数;如果第一个对象大于第二个对象,则返回正整数;如果两个对象相等,则返回零。
示例代码:
```csharp
public class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
if (other == null) return 1;
// 按照年龄比较
return this.Age.CompareTo(other.Age);
}
}
```
如果需要使用自定义的比较方式,还可以实现 `IComparer` 接口,该接口定义了一个 `Compare` 方法,用于比较两个对象。
示例代码:
```csharp
public class PersonComparer : IComparer<Person>
{
public int Compare(Person x, Person y)
{
if (x == null || y == null) return 0;
// 按照年龄比较
return x.Age.CompareTo(y.Age);
}
}
```
然后在使用 `List` 类型时,可以通过传入 `IComparer` 对象来指定使用自定义的比较方式。
示例代码:
```csharp
var people = new List<Person>
{
new Person { Name = "Tom", Age = 24 },
new Person { Name = "Bob", Age = 18 },
new Person { Name = "Mary", Age = 32 }
};
// 使用 CompareTo 方法进行比较
people.Sort();
// 使用自定义的比较方式进行比较
people.Sort(new PersonComparer());
```
阅读全文