当值类型仅在运行时已知时,是否可以将 object[] 转换为诸如 double[] 之类的值类型?如果无法使用 .net 内置转换将 object[] 中的对象转换为值元素类型(例如双精度),则完全可以接受异常。
var original = new object[] { 1 , 2 , 3 , 4 , 5 , 6 }
Type resultType = typeof( double[] ); // or any means of getting a type at runtime
var result = ??
以下尝试失败:
# error: Object must impliment IConvertible
Convert.ChangeType( original , resultType );
# error: Object cannot be stored in an array of this type.
var result = Array.CreateInstance( resultType , original.Length );
for ( int i = 0 ; i < original.Length ; i++ )
{
result.SetValue( Convert.ChangeType( original[ i ] , resultType.GetElementType() ) , i );
}