的IComparable的定义顺序(小于,大于).它定义的方法是CompareTo,您可以使用它来确定两个元素之间的顺序.
IEquatable定义了相等性.它定义的方法是Equals,它可以让你确定两个元素是否相等.
比较示例,按年龄排序Person:
public class Person : IComparable<Person>
{
public int Age { get; set; }
public int ID { get; set; }
public int CompareTo(Person other)
{
return Math.Sign(Age - other.Age); // -1 other greater than this
// 0 if same age
// 1 if this greater than other
}
}
Run Code Online (Sandbox Code Playgroud)
排序用法:
[Test]
public void SortTest()
{
var persons = new List<Person>
{
new Person { Age = 0 },
new Person { Age = 2 },
new Person { Age = 1 }
};
persons.Sort();
Assert.AreEqual(0, persons[0].Age);
Assert.AreEqual(1, persons[1].Age);
Assert.AreEqual(2, persons[2].Age);
}
Run Code Online (Sandbox Code Playgroud)
通过ID识别Person的平等示例:
public class Person : IEquatable<Person>
{
public int Age { get; set; }
public int ID { get; set; }
public bool Equals(Person other)
{
return ID == other.ID;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3045 次 |
| 最近记录: |