这是隐含的,但您可能应该提到“myList”的声明。让我为你写。
var myList=new List<KeyValuePair<string, int>>();
现在,这意味着该列表中的每个项目都是 KeyValuePair[string,int] 的一个实例。
现在,来回答你的问题。
Sort 方法的重载之一接受“比较”委托,该委托接受集合的两项并返回一个整数。
public delegate int Comparison<T>(T x, T y)
本质上,您所做的是创建一个匿名委托,它使用 IComparable 的“CompareTo”方法(字符串和 int 实现此界面)。
IComparable.CompareTo 返回一个整数(Sort 方法使用它来排列列表中的项目),说明 lhs 小于 (-1)、大于 (1) 或等于 (0) rhs。
仅供参考:如果您正在使用 C# 3.0,您甚至不需要匿名委托。您可以改用 lambda 表达式(它是定义匿名委托的简写,更多?)
例如:
myList.Sort((x, y) => x.Value.CompareTo(y.Value));
//Sort over Value
myList.Sort((x, y) => x.Key.CompareTo(y.Key));
//Sort over key
希望解释是有帮助的。