对元组列表进行排序时的默认行为是什么

本文关键字:默认 是什么 排序 元组 列表 | 更新日期: 2023-09-27 18:36:11

我想使用 int 值对Tuple<int, string> List进行排序。在此示例中,使用以下代码:

List<Tuple<int, string>> list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(1, "cat"));
list.Add(new Tuple<int, string>(100, "apple"));
list.Add(new Tuple<int, string>(2, "zebra"));
list.Sort((a, b) => a.Item1.CompareTo(b.Item1));
foreach (var element in list)
{
    Console.WriteLine(element);
}

我注意到,如果我更改以下行:

list.Sort((a, b) => a.Item1.CompareTo(b.Item1));

自:

list.Sort();

元素再次排序。

这是否意味着默认行为是使用第一项?如果是,这两种技术之间是否存在任何性能差异?

对元组列表进行排序时的默认行为是什么

元组通过使用该组件的默认排序依次比较每个组件来比较自己。这不是很清楚,但是(来自MSDN):

Tuple<T1, T2>.IComparable.CompareTo 方法使用默认对象比较器来比较每个组件。

这与您的示例略有不同,因为在匹配的情况下,排序将继续到元组的第 2、3、4 等部分(在您的情况下是string)(例如,2 个项目,int 7