1

Generics Collection ライブラリ C5 (サーバー ダウン :-( ) を使用しています。IntervalHeap(T) があり、Max または Min ではない T を削除または置換する必要があります。T から IPriorityQueueHandle を取得するにはどうすればよいですか? ? C5 ライブラリのソース コードは、IPriorityQueueHandle(T) には実装するメソッドまたはプロパティがなく、コンパイラは、私の T に対する IPriorityQueueHandle(T) の私の実装が受け入れられると考えていることを示しています。

q.Replace(t, t);

C5 ライブラリは T を (ハンドル) に変換できないため、InvalidCastException をスローします。

4

1 に答える 1

2

q.Add(ref t.handle, t) を呼び出すと、IPriorityQueueHandle(t) を取得できるように見えます。これは、自分のフィールド (t.handle) に貼り付けて、後で q 内で t の優先度を変更する必要があるときに引き抜くことができます。 q.Replace(t.handle, t) で。

于 2010-06-09T23:38:53.907 に答える