首页 新闻 会员 周边

能不能帮详细解释一下代码啊

0
悬赏园豆:10 [已解决问题] 解决于 2015-11-16 12:40

List<KeyValuePair<string, long>> myList = new List<KeyValuePair<string, long>>(dic);

myList.Sort(delegate(KeyValuePair<string, long> s1, KeyValuePair<string, long> s2)
{

return s1.Value.CompareTo(s2.Value);

});

我只知道这是把Dictionary<string, long> 按value排序,但是不明白有颜色这段代码哎,能不能帮忙解释一下啊,谢谢。

包子wxl的主页 包子wxl | 初学一级 | 园豆:186
提问于:2015-11-16 11:39
< >
分享
最佳答案
0

这是一个很常见的写法啊。
Sort排序需要根据一个委托METHOD(KVP1,KVP2)的返回值来取得比较结果,从而进行排序。
你的这个方法,Sort后面括号里面的就是这个委托,而且用的是匿名委托(省得再重新定义了,直接在使用的地方就定义了)。
而比较委托里面的值则是KayVauePair<stirng,long>,之所以是这个,是因为你的myList内部的元素就是这样的,这个类型是和你的List<T>中的T一样的。而比较的具体方法就是用S1的value去比较s2的value大小,没有其它任何复杂的操作。

收获园豆:3
ensleep | 小虾三级 |园豆:1682 | 2015-11-16 12:25

好像有点懂了,可能是我对sort()这个方法里面的重载方法理解不太好吧,我看看sort()这个方法的定义。

包子wxl | 园豆:186 (初学一级) | 2015-11-16 12:39
其他回答(2)
0

确实不太好理解,你把KeyValuePair<string,long>换成一个简单类型,比如int试试。。。

收获园豆:2
顾晓北 | 园豆:10844 (专家六级) | 2015-11-16 11:55

如果是int的话,好像是直接 Array.Sort()就行了,不用参数的。

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-11-16 12:00
0

就是实现一个KeyValuePair<string,long>的排序方法

收获园豆:2
吴瑞祥 | 园豆:29449 (高人七级) | 2015-11-16 12:00

是固定这样写的吗?好难理解是什么意思。

支持(0) 反对(0) 包子wxl | 园豆:186 (初学一级) | 2015-11-16 12:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册