2010-02-06 64 views
1

我在一塊瓷磚上實施Dijkstra's。我想要將所有圖塊存儲在優先級隊列中,按照距離起始位置的距離排序。在Java中,這會是這樣:C#XNA等同於Java的PriorityQueue與比較器?

Queue<Point> pq = new PriorityQueue<Point>(new Comparator() { /* sort by distance from start */ });

的會是什麼C#XNA相當於用? C#有一個PriorityQueue類,但只適用於IComparable對象,其中Point對象不是。

+1

爲什麼不創建一個實現'IComparable'的'Point'派生的對象? – 2010-02-06 21:36:31

回答

1

由於無法從struct Point派生,因此可以使用Point作爲組合成員來實現IComparable ComparablePoint類的最小實現。

1

我認爲簡單的解決方案是實現您自己的類來存儲節點並使其具有可比性(通過實現IComparable接口)。