日期:2014-05-17  浏览次数:21143 次

C#求助,lambda 和Sort函数
毕业设计要用C#做游戏,我是C#初学者,最近看XNA寻路,在A STAR寻路中,有这样一段代码:
openNodes.Sort((a, b) => { return a.Cost.CompareTo(b.Cost); });请问"=>"这个构造匿名函数怎么整的?还有Sort()用法?
  注:openNodes是HashSet<GuideNodes>(),其中GuideNodes是一个类,这个类中有个int型变量为Cost,但是这个a,b别的地方都没有啊,这段代码该怎么理解??求高手解答。另外“=>”符号还是不太理解。。

------解决方案--------------------
http://blog.csdn.net/xianfajushi/article/details/7609849参考
------解决方案--------------------
=>运算符前面的是形参列表,后面是委托方法的方法体。
a,b是形参,就像你定义函数一样,你可以任意命名参数,sin(double x)和sin(double a)没有什么区别,只要和你的方法实现匹配就可以了。

作为经典的排序算法实现,系统帮你实现了排序的框架,但是需要你将排序的策略作为委托传入告诉它。这个排序的策略(比较两个数的大小,并返回)是排序函数内部调用的。
------解决方案--------------------
探讨

问题补充:
openNodes.Sort((a, b) => { return a.Cost.CompareTo(b.Cost); });这段代码是将list<>按升序排列吗???

------解决方案--------------------
openNodes.Sort((b, a) => { return a.Cost.CompareTo(b.Cost); });
你这么写可以降序排列。如果能想明白为什么,委托就算搞明白了。