IListを配列に変換したい:私のコードを見てください:
IList list = new ArrayList();
list.Add(1);
Array array = new Array[list.Count];
list.CopyTo(array, 0);
なぜ私はSystem.InvalidCastException:ソース配列の少なくとも1つの要素を宛先配列タイプにキャストできませんでした? listの型としてArrayListを使用できないと仮定して、それをどのように解決できるか)変数?
更新1: .NET1.1を使用しています。そのため、GenericsやLinqなどは使用できません。最も一般的なケースの結果を受け取りたいだけです-整数が例として示されています。このコードはすべてのタイプで機能する必要があるため、ここではArrayを使用します(配列の使用について間違っているかもしれませんが、もう一度、一般的なケースが必要です)。
配列を作成していますArray
値の。 1はint
であり、Array
ではありません。あなたが持っている必要があります:
IList list = new ArrayList();
list.Add(1);
Array array = new int[list.Count];
list.CopyTo(array, 0);
または、理想的には、最初に非ジェネリック型を使用しないでください... ArrayList
の代わりにListを使用し、IList
の代わりにIList<T>
を使用します。
編集:3行目は簡単に次のようになる可能性があることに注意してください:
Array array = new object[list.Count];
代わりに。
CastとToArrayを使用できます。
Array array = list.Cast<int>().ToArray();
おそらく最もコンパクトな解決策はこれです:
Enumerable.Range(0, list.Count).Select(i => list[i]).ToArray();