我有一个 object
其值可能是几种数组类型之一 int[]
要么 string[]
,我想把它转换为 string[]
。我的第一次尝试失败了
void Do(object value)
{
if (value.GetType().IsArray)
{
object[] array = (object[])value;
string[] strings = Array.ConvertAll(array, item => item.ToString());
// ...
}
}
与运行时错误 Unable to cast object of type 'System.Int32[]' to type 'System.Object[]'
自从我的回忆起,回想起来是有道理的 int[]
不包含盒装整数。
我四处寻找这个工作版本:
void Do(object value)
{
if (value.GetType().IsArray)
{
object[] array = ((Array)value).Cast<object>().ToArray();
string[] strings = Array.ConvertAll(array, item => item.ToString());
// ...
}
}
我想这没关系,但看起来很复杂。谁有更简单的方法?