将 Lambda 比较器与 PriorityQueue 结合使用

tun*_*h24 6 .net c#

文档仅显示从 IComparer 派生,然后在 PriorityQueue 的构造函数中指定派生类作为比较器,但对于多个优先级队列,它会创建太多额外的类。

是否可以在 C# 中将 Lambda 比较器与 PriorityQueue 类一起使用?

tun*_*h24 18

虽然另一个答案很好,但其他用户评论中提到的快速单行解决方案是:

//Descending Sort, Integer
var queue = new PriorityQueue<int, int>(Comparer<int>.Create((x, y) => y - x));

//Ascending Sort, Object
var queue = new PriorityQueue<ObjectA, ObjectB>(Comparer<ObjectB>.Create((x, y) => x.Something.CompareTo(y.Something));
Run Code Online (Sandbox Code Playgroud)

请注意,第二个元素(即优先级)可以是对象或原始数据类型。