我有一个System.Array,我需要转换为字符串[]。有没有更好的方式来做到这一点,而不仅仅是循环访问数组,在每个元素上调用ToString并保存为字符串[]?问题是我直到运行时才知道元素的类型。转换System.Array到字符串[]
回答
难道只是Array
?或者是(例如)object[]
?如果是这样的:
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
注比的引用类型的任何1-d阵列应被强制转换为object[]
(即使它实际上是,例如,Foo[]
),但值类型(如int[]
)可以”不要。所以,你可以尝试:
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
但如果是像int[]
,你必须手动循环。
它只是数组,它实际上可能包含值类型(可能会)。 – KrisTrip 2009-12-28 18:37:05
@KrisTrip - *变量*可能是“只是数组”,但对象不会;它有一个确定的数组类型。在“包含值类型”('object []'可以做的)和“是一个值类型数组”(如'int []')之间也有**大**差异。这种差异在这种情况下很重要。你能澄清一下**'Array'实例是什么吗? – 2009-12-28 19:04:14
我使用ToArray方法获取数组。我不知道,直到运行时,但它可能是一个int [],双[],浮动[],字符串[]或复杂[](用户定义的对象) – KrisTrip 2009-12-28 19:28:18
您可以使用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));
仍然是一个通用对象数组。 – 2014-12-01 06:38:22
简单和基本的方法;
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. 无法隐式转换类型“的System.Array”到“字符串[]”在windows窗体
- 2. 转换到Unicode字符串
- 3. 转换字符串到流
- 4. 字符串到Xml转换
- 5. 转换字符串到
- 6. 将System.Array序列化为XML字符串
- 7. 转换数字字符串转换为字符串
- 8. 字符串转换
- 9. 字符串转换
- 10. 字符串转换
- 11. 字符串转换
- 12. 转换:uid_t到字符串,off_t到字符串
- 13. 从字符串到Clob和Clob到字符串的转换
- 14. Java字节[]到/从字符串转换
- 15. 转换数字的字符串到NSTimeInterval
- 16. 数字到ASCII字符串转换器
- 17. 转换ASCII字符串到数字
- 18. 字符串转换为字节转换
- 19. 将字符串转换为字符串
- 20. 转换字符串[字符串:任何]
- 21. 注意:数组到字符串转换将数组转换为字符串
- 22. 的ArrayList转换为字符串,并转换字符串返回到ArrayList的
- 23. 转换的java字符串转换成JavaScript字符串
- 24. 字符串字典转换
- 25. 字符串转换字典
- 26. 从字符串到字符串unixepoch的日期转换
- 27. 将Uri转换为字符串和字符串到Uri
- 28. 字符串到int转换和字符串操作MIPS
- 29. 转换词典<字符串,字符串>到XML
- 30. 从字符串“SystemNullReferenceException:O”到字符串“Integer”的转换无效
不知道的类型,直到运行时,你基本上是需要遍历数组在(与LINQ或任何方法吧)。 – GrayWizardx 2009-12-28 18:10:23
(回复评论) – 2009-12-28 19:04:47