2

を返す関数がありIDictionary<TKey, List<TValue> >ます。
を取る別の関数がありIDictionary<TKey, IEnumerable<TValue> >ます。

最初の関数の戻り値を 2 番目の関数に渡す必要があります。
コンパイラは、最初のものを 2 番目のものに暗黙的に変換したくありません。では、O(1) で 1 番目を 2 番目に変換するにはどうすればよいでしょうか?

私はいつでも変換関数を書くことができました

public static IDictionary<TKey, IEnumerable<TValue>> ToIEnumerable<TKey, TValue>(this IDictionary<TKey, List<TValue>> source)
{
    return source.ToDictionary(s => s.Key, s => s.Value.AsEnumerable());
}

しかし、これは O(1) ではなく、O(log n) のようなものだと確信しています。

ここで関連する質問:入れ子になったインターフェイス: IDictionary< TKey, IList< TValue > > を IDictionary< TKey, IEnumerable < TValue> > にキャストしますか?

4

1 に答える 1