У меня есть System.Array, что мне нужно преобразовать в строку []. Есть ли лучший способ сделать это, чем просто перебирать массив, вызывая ToString для каждого элемента и сохраняя строку []? Проблема в том, что я не обязательно знаю тип элементов до выполнения.Convert System.Array to string []
ответ
Как насчет использования LINQ?
string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
Это просто Array
? Или это (например) object[]
? Если это так:
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Примечание, чем любой 1-d массив референс-типов должно быть литьевой к object[]
(даже если это на самом деле, например, Foo[]
), но значение-типа (например, int[]
) может» t be. Таким образом, вы можете попробовать:
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Но если это что-то вроде int[]
, вам придется вручную петли.
Это просто Array, и он может фактически содержать типы значений (вероятно, будет). – KrisTrip
@KrisTrip - * variable * может быть «просто Array», но объект не будет; он имеет определенный тип массива. Существует также ** большая ** разница между «содержать типы значений» (которую 'object []' может делать), а «является массивом типа значений» (например, 'int []').Эта разница имеет значение в этом случае. Можете ли вы уточнить, что именно ** является экземпляром 'Array'? –
Я получаю массив с помощью метода ToArray. Я не знаю до выполнения, но это может быть int [], double [], float [], string [] или Complex [] (объект, определенный пользователем) – KrisTrip
Вы можете использовать Array.ConvertAll
, например:
string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);
Это, вероятно, может быть сжат, но он получает обойти ограничение, чтобы не быть в состоянии использовать Cast <> или Linq Выберите на типе 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));
Все еще массив общих объектов. –
Простой и базовый подход;
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);
Или просто другой подход: Вы можете использовать personNames.ToArray
тоже:
string[] names = (string[]) personNames.ToArray(typeof (string));
- 1. Convert String [] [] to String []
- 2. Convert String to Hash
- 3. convert string [] to int []
- 4. convert string to boolean
- 5. convert byte [] to string
- 6. Convert JsDefined to String
- 7. convert string to cultureinfo
- 8. Convert StringWriter to string []
- 9. convert String to WebElement
- 10. convert string to date
- 11. Convert Byte To String
- 12. convert String to Dataset
- 13. Convert String to Drawable
- 14. Convert Object [,] to String
- 15. Convert UIBezierPath to String
- 16. Convert Node to String
- 17. convert unsigned char * to String
- 18. Ruby: Convert String to Float
- 19. Convert InboundJaxrsResponse to json string
- 20. Swift convert string to date
- 21. Django template convert to string
- 22. convert image.jpg to Base64 string
- 23. Ruby Convert String to File
- 24. Golang convert [] int8 to string
- 25. Postgres Convert String to Number
- 26. convert string to dict python
- 27. Convert String to Datetime C#
- 28. Stata: Convert String to Date
- 29. Javascript convert string to date
- 30. Powershell convert string to datetime
Без не зная типов до выполнения, то по существу нужно перебирать массив (будь то с помощью LINQ или любым другим способом). – GrayWizardx
(ответил на комментарий) –