今日、同僚からコレクションに範囲を追加する方法を尋ねられました。 を継承するクラスがあります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>
。