文档仅显示从 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)
请注意,第二个元素(即优先级)可以是对象或原始数据类型。