array c# .net arrays system.array

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);