コレクションに範囲を追加する 質問する

コレクションに範囲を追加する 質問する

今日、同僚からコレクションに範囲を追加する方法を尋ねられました。 を継承するクラスがありますCollection<T>。 そのタイプの取得専用プロパティには、すでにいくつかの項目が含まれています。 別のコレクションの項目をプロパティ コレクションに追加したいと考えています。 C#3 に適した方法でこれを行うにはどうすればよいでしょうか。(取得専用プロパティに関する制約に注意してください。これにより、Union を実行して再割り当てするなどのソリューションが防止されます。)

もちろん、Property. Add を使用した foreach は機能します。ただし、List<T>-style AddRange の方がはるかにエレガントです。

拡張メソッドを書くのは簡単です:

public static class CollectionHelpers
{
    public static void AddRange<T>(this ICollection<T> destination,
                                   IEnumerable<T> source)
    {
        foreach (T item in source)
        {
            destination.Add(item);
        }
    }
}

しかし、私は車輪を再発明しているような気がしますSystem.Linqモアリンク

デザインが悪いですか? 追加を呼び出すだけですか? 明らかなことを見逃していますか?

ベストアンサー1

いいえ、これはまったく理にかなっているように思えます。List<T>.AddRange()基本的にこれを実行するメソッドですが、コレクションが具体的な である必要がありますList<T>

おすすめ記事