我试图将一个对象(这里声明为'obj':object is array,primitive)转换为字符串数组.
对象可以是任何uint [],int16 []等.
我一直在尝试使用
string[] str = Array.ConvertAll<object, string>((object[])obj, Convert.ToString);
Run Code Online (Sandbox Code Playgroud)
当我尝试将未知类型对象转换为object []时,会出现问题.我一直在犯错误.
我做的一次尝试失败了,正在使用
object[] arr = (object[])obj;
Run Code Online (Sandbox Code Playgroud)
要么
IEnumerable<object> list = obj as IEnumerable<object>
object[] arr = (object[])list;
Run Code Online (Sandbox Code Playgroud)
我在转换时看到了有关值类型和引用类型问题的帖子.
是否有一个简单的代码可以处理对象[]的转换,无论对象的类型如何,只要它是一个数组?我试图避免手动处理每种可能的类型铸件.
提前致谢
我有一个object值可能是像int[]或的几种数组类型之一string[],我想将它转换为string[].我的第一次尝试失败了
void Do(object value)
{
if (value.GetType().IsArray)
{
object[] array = (object[])value;
string[] strings = Array.ConvertAll(array, item => item.ToString());
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
运行时错误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());
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我想这没关系,但看起来很复杂.谁有更简单的方法?