これをどうやって動作させるかが分かりません:
object x = new Int32[7];
Type t = x.GetType();
// now forget about x, and just use t from here.
// attempt1
object y1 = Activator.CreateInstance(t); // fails with exception
// attempt2
object y2 = Array.CreateInstance(t, 7); // creates an array of type Int32[][] ! wrong
秘密のソースは何ですか? 配列の要素の型を取得できれば 2 番目の方法を機能させることができますが、それもまだわかりません。
ベストアンサー1
Type.GetElementType()
配列以外の型を取得する必要があります:
object x = new Int32[7];
Type t = x.GetType();
object y = Array.CreateInstance(t.GetElementType(), 7);
あるいは、要素の型を直接取得できる場合は、それを使用します。
Type t = typeof(int);
object y = Array.CreateInstance(t, 7);
基本的に、Array.CreateInstance
最終的な配列の型ではなく、作成する配列の要素の型が必要です。