所以,我正在为我的 C# 类做作业,并且我有一个对象列表。这些对象有一个“int rand”字段,该字段被分配一个随机数。然后我想根据这个 rand 字段对列表中的对象重新排序。
我找到了这篇文章: http://www.developerfusion.com/code/5513/sorting-and-searching-using-c-lists/
这很有帮助。我修改了这一行以适合我的代码:
people.Sort(delegate(Person p1, Person p2) { return p1.age.CompareTo(p2.age); });
它满足了我的要求。
我想知道的是:它是如何工作的?这对我来说看起来很令人困惑。
最佳答案
事实上 Sort 方法应该基于一些比较进行排序,在您当前的代码中您将比较作为委托(delegate)传递,您也可以将其嵌入到类定义中以降低代码复杂性,实际上它只需要为您的 实现 IComparable人
类:
public class Person : IComparable
{
public int age { get; set; }
public int CompareTo(object obj)
{
var person = obj as Person;
if (person != null)
{
if (age > person.age)
return 1;
else if (age == person.age)
return 0;
return -1;
}
return 1;
}
}
然后只需使用不带委托(delegate)的排序即可。
关于c# - 如何根据属性对 C# 列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002605/