我有一個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的C#十進制值轉換爲字符串
- 2. 無法隱式轉換類型「的System.Array」到「字符串[]」在windows窗體
- 3. C++字符串到字符串轉換
- 4. 字符串到雙轉換
- 5. 轉換字符串到
- 6. 轉換字符串到流
- 7. 轉換size_t到字符串
- 8. 字符串到Xml轉換
- 9. 字符數組到字符串轉換
- 10. C++字符串到字符轉換
- 11. 將System.Array序列化爲XML字符串
- 12. 將double []轉換爲System.array c#
- 13. unicode字符串轉換到一個轉義ASCII字符串
- 14. 轉換字符串字符串字面
- 15. 轉換數字字符串轉換爲字符串
- 16. 轉換字符串
- 17. 字符串轉換
- 18. 字符串轉換
- 19. 字符串轉換
- 20. 字符串轉換
- 21. 從字符串到Clob和Clob到字符串的轉換
- 22. 轉換:uid_t到字符串,off_t到字符串
- 23. Java字節[]到/從字符串轉換
- 24. 字符串到字節轉換在java
- 25. 數字到ASCII字符串轉換器
- 26. 轉換ASCII字符串到數字
- 27. 字符串到字節轉換
- 28. 八位字節到字符串轉換
- 29. 字符串到數字轉換
- 30. 轉換數字的字符串到NSTimeInterval
不知道的類型,直到運行時,你基本上是需要遍歷數組在(與LINQ或任何方法吧)。 – GrayWizardx 2009-12-28 18:10:23
(回覆評論) – 2009-12-28 19:04:47