LINQ その4
IEnumerable
これにあわせて、受け渡しの方法を変える。
class Hoge<T> { //内部で持つのはT[] public T[] Array{ get; private set; } //もらうときはIEnumerable<T> public Hoge(IEnumerable<T> enumerable) { Array = enumerable.ToArray(); } } class Program { static void Main() { Derived[] derived = DerivedArray(); //IEnuemrable<Base>を取るところにDerivedの配列を突っ込む Hoge<Base> hoge = new Hoge<Base>(derived); } ... }
さっき気づいたのだけど、IEnumerable<Base>にDerived[]を突っ込んでも全く問題がない。
これによって、受け取る型は全てのコレクションがOKになり、何を突っ込んでもコピーされるので副作用の心配もなくなる。
IEnumerable
static void Main() { IEnumerable<Derived> derivedEnumerable = DerivedEnumerable(); //一回配列にする Derived[] derived = derivedEnumerable.ToArray(); //IEnumerable<Base>を取るところにDerivedの配列を突っ込む Hoge<Base> hoge = new Hoge<Base>(derived); }
ToArrayが二回必要になってしまう。そのくらいガマンするべきだ。
ヘジはこうしろといいたかったのか。どうも俺は基礎がなってないな。最初からこうしときゃよかった。