ふらっとC#,C♯,C#(初心者用) Part75
■ このスレッドは過去ログ倉庫に格納されています
0350デフォルトの名無しさん
2011/06/12(日) 00:19:02.97object[] ary = (object[]) obj;
foreach (object o in ary) {
Console.WriteLine(o.ToString()); // などの処理
}
としたところobjがstring[]や自作クラス[]の場合はうまく動いたのですが
intなどのプリミティブ型の配列ではうまくいきませんでした。
>型 'System.Int32[]' のオブジェクトを型 'System.Object[]' にキャストできません。
以下の様に全てのプリミティブ型について分岐させるとうまくいったのですが、もっと良い方法はないでしょうか?
object[] ary;
if (obj.GetType().FullName == typeof(int[]).FullName) {
int[] tmp = (int[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else if (obj.GetType().FullName == typeof(double[]).FullName) {
double[] tmp = (double[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else {
ary = (object[])obj;
}
■ このスレッドは過去ログ倉庫に格納されています