gpt4 book ai didi

c# - CompareTo 如何对列表进行排序?

转载 作者:行者123 更新时间:2023-11-30 13:13:31 25 4
gpt4 key购买 nike

下面是一个列表 l其中包含 Product 的列表与 NamePrice特性。该列表可以按以下类别的字母顺序排序 ProductNameComparer它实现了 IComparar

List<Product> l = p.GetList();
l.Sort(new ProductNameComparer());
MessageBox.Show(l[0].Name);

public class ProductNameComparer : IComparer<Product>
{
public int Compare(Product x, Product y)
{
return x.Name.CompareTo(y.Name);
}
}

我不明白列表是如何排序的。根据MSDN CompareTo返回 小于零大于零Int32 类型值。如果我有:

string c = "Apple";
string d = "Orange";
return c.CompareTo(d)

该函数将返回“-1”。

但是如果我替换 l.Sort(-1)而不是 l.Sort(new ProductNameComparer())代码无法编译

还有为什么 Compare(Product x, Product y)仅将两个产品作为参数,但仍设法对产品列表(>2)进行比较和排序?

最佳答案

Sort 方法不仅调用一次 Compare - 每当需要比较两个项目时,它都会调用多次。这是一种通用排序算法,能够对任何项目集合进行排序,只要它能够以一致的方式比较其中的任意两个项目。

如果您尝试调用 l.Sort(-1),代码将无法编译,因为它只是试图传递一个整数——这意味着什么?

您需要明白,您并不是在为 Sort 方法提供一个比较结果 - 您是在为其提供比较所需项目的能力。

关于c# - CompareTo 如何对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8531075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com