【发布时间】:2017-07-16 07:00:01
【问题描述】:
我有一个 C# 方法,它使用 object 作为通用容器来返回可以使用不同数据类型声明的数据数组。下面是这种方法的简化示例:
void GetChannelData(string name, out object data)
{
// Depending on "name", the underlying type of
// "data" can be different: int[], byte[], float[]...
// Below I simply return int[] for the sake of example
int[] intArray = { 0, 1, 2, 3, 4, 5 };
data = intArray;
}
我需要将所有返回的数组元素转换为double,但到目前为止我找不到方法。理想情况下,我想执行以下操作:
object objArray;
GetChannelData("test", out objArray);
double[] doubleArray = Array.ConvertAll<objArray.GetType().GetElementType(), double>(objArray, item => (double)item);
因为ConvertAll 不接受在运行时定义的类型,所以失败了。我也尝试过对dynamic 变量的中间转换,但无济于事。
有没有办法以简单的方式执行这种类型转换?
【问题讨论】:
-
所有提供的答案都可以正常工作;接受@AlexWiese 版本作为正确答案,因为他在 AnyName 之前提供了这样的解决方案。谢谢大家!
标签: c# arrays object dynamic type-conversion