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

What is the default behaviour when list of tuples is sorted?

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

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();

元素再次排序。

这是否意味着默认行为是使用第一项?如果是,这两种技术在性能上有什么区别吗?

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

The Tuple<T1, T2>.IComparable.CompareTo method uses the default object comparer to compare each component.

这与您的示例略有不同,因为在匹配的情况下(2 个项目与7int,例如)