문자열 []로 변환해야하는 System.Array가 있습니다. 배열을 반복하면서 각 요소의 ToString을 호출하고 문자열 []에 저장하는 것보다 더 나은 방법이 있습니까? 문제는 런타임까지 요소의 유형을 반드시 알 필요가 없다는 것입니다.System.Array를 string []으로 변환하십시오.
답변
그냥 Array
입니까? 아니면 (예를 들어) object[]
입니까? 그렇다면 :
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
레퍼런스 유형의 1 차원 배열 (이것은, 예를 들면, 실제로 Foo[]
하더라도) object[]
스트 수 있지만 것보다 주 가치 유형 '수 (예 int[]
등) 그러지 마라.
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
을하지만 int[]
같은 경우, 수동 루프를해야합니다 : 그래서 당신은 시도 할 수 있습니다.
그것은 단지 배열이며 실제로 값 유형을 포함 할 수 있습니다 (아마). – KrisTrip
@KrisTrip - * 변수 *는 "그냥 배열"일 수 있지만 객체는 그렇지 않습니다. 그것은 명확한 배열 타입을 가지고있다. 또한 "value type 포함"(object []는 할 수 있음)과 "value type 배열"(int []과 같은) 사이에는 큰 차이가 있습니다.이 경우이 차이가 중요합니다. 정확히 ** Array 인스턴스가 무엇인지 명확히 할 수 있습니까? –
ToArray 메서드를 사용하여 배열을 가져옵니다. 런타임까지 모르지만 int [], double [], float [], string [] 또는 Complex [] (사용자 정의 객체) – KrisTrip
당신은이 같은 Array.ConvertAll
사용할 수 있습니다 : 이것은 아마 압축 할 수
string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);
을하지만 수 없다는 제한 주위에 얻을 수는 < 캐스트> 또는 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. UNC 경로를 'file : ///'으로 변환하십시오.
- 2. IDictionary <string, string> 키를 소문자로 변환하십시오 (C#)
- 3. 한 줄의 VB.Net 코드를 C#으로 변환하십시오.
- 4. JSON 날짜/시간을 C#으로 변환하십시오. DateTime
- 5. ArrayList <String>을 byte []로 변환하십시오.
- 6. <String>을 String []으로 변환하는 방법?
- 7. std :: string :: assign()으로 인해 segfault가 발생합니다.
- 8. C++ 문자열을 .NET String ^으로 변환하려면 어떻게해야합니까?
- 9. StringBuilder를 String []으로 변환하는 최선의 방법은 무엇입니까?
- 10. IDictionary <string, object>를 IDictionary <string, string>으로 변환하는 우아한 방법은 무엇입니까
- 11. CString 배열을 System :: String으로 변환하십시오.
- 12. "string"! = "string"
- 13. HashSet <String>에서 String []
- 14. datetime js를 C로 변환하십시오.
- 15. XmlQualifiedName []의 속성 유형을 string []으로 바꿉니 까?
- 16. "const TCHAR에 대한 포인터"를 "std :: string"으로 어떻게 변환합니까?
- 17. 식에서 int에서 String []으로 캐스팅 할 수 없습니다.
- 18. C#으로 IEnumerable <KeyValuePair <string, string >> 개체 만들기? 테스트 목적으로
- 19. HashMap <CharSequence, CharSequence>을 HashMap <String, String>으로 설정할 수 없습니다.
- 20. ListItemCollection (dropdownlist.items)을 사전 <string, string>으로 변환하는 방법?
- 21. C++에서 "string *"을 "const string"으로 변환하려면 어떻게해야합니까? 예를 들어
- 22. .csv 파일을 .xlsx로 변환하십시오.
- 23. 문자열을 double로 변환하십시오.
- 24. 내 SQL을 LINQ로 변환하십시오.
- 25. 문자열을 DataColumn의 guid로 변환하십시오.
- 26. 문자열 백분율을 double로 변환하십시오.
- 27. 문자열을 double로 변환하십시오.
- 28. char를 TCHAR * argv []로 변환하십시오.
- 29. 문자열을 TitleWindow 클래스로 변환하십시오.
- 30. HASH를 ARRAY로 변환하십시오.
을 실행 할 때까지 유형을 모른 채, 당신은 본질적으로 배열을 반복해야합니다 (LINQ 또는 어떤 방법으로 일). – GrayWizardx
(의견에 회신) –