我想使用List
值对Tuple<int, string>
int
进行排序。在此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();
元素再次排序。
这是否意味着默认行为是使用第一项?如果是,这两种技术之间是否有任何性能差异?
答案 0 :(得分:7)
元组通过使用该组件的默认排序依次比较每个组件来比较自己。它不是很清楚,但是(from MSDN):
Tuple<T1, T2>.IComparable.CompareTo
方法使用默认对象比较器来比较每个组件。
这与您的示例略有不同,因为在匹配的情况下,排序将继续到元组的第2个,第3个,第4个等组件(在您的情况下为string
)(2个项目与{{例如,int
的1}}