c# - object array javascript
Convertir System.Array a cadena (5)
Tengo un System.Array que necesito convertir a cadena []. ¿Hay una forma mejor de hacerlo que simplemente recorrer en bucle la matriz, llamar a ToString en cada elemento y guardar en una cadena []? El problema es que no sé necesariamente el tipo de los elementos hasta el tiempo de ejecución.
¿Es sólo Array
? ¿O es (por ejemplo) un object[]
? Si es así:
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Tenga en cuenta que cualquier conjunto 1-d de tipos de referencia debe poder convertirse en object[]
(incluso si en realidad es, por ejemplo, Foo[]
), pero los tipos de valor (como int[]
) no pueden ser. Así que podrías intentar:
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Pero si es algo como int[]
, tendrás que hacer un bucle manualmente.
¿Qué hay de usar LINQ?
string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
Enfoque simple y básico;
Array personNames = Array.CreateInstance(typeof (string), 3);
// or Array personNames = new string[3];
personNames.SetValue("Ally", 0);
personNames.SetValue("Eloise", 1);
personNames.SetValue("John", 2);
string[] names = (string[]) personNames;
// or string[] names = personNames as string[]
foreach (string name in names)
Console.WriteLine(name);
O simplemente otro enfoque: también puede usar personNames.ToArray
:
string[] names = (string[]) personNames.ToArray(typeof (string));
Probablemente se pueda comprimir, pero evita la limitación de no poder usar Cast <> o Linq Select en un tipo de objeto System.Array.
Type myType = MethodToGetMyEnumType();
Array enumValuesArray = Enum.GetValues(myType);
object[] objectValues new object[enumValuesArray.Length];
Array.Copy(enumValuesArray, objectValues, enumValuesArray.Length);
var correctTypeIEnumerable = objectValues.Select(x => Convert.ChangeType(x, t));
Puedes usar Array.ConvertAll
, así:
string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);