2013-09-23 10 views
-2

목록에서 배열로 변환 할 C# 메서드가 있습니다. 코드는 다음과 같습니다.foreach 루프 내부에서 정수를 증가시킬 수 없습니다.

public String[] ConvertToArray(List<InstallationControl> list) 
     { 
      String[] Array = null; 
      Int32 i = 0; 
      foreach (var item in list) 
      { 
       Array[i] = item.Value.ToString(); 
       i++; 
      } 

      return Array; 
     } 

그러나 항상 Null 예외가 발생합니다. 누군가 나에게 이것을 설명 할 수 있습니까?

+7

배열을 초기화하지 않습니다. String [] Array = new String [list.Count] – Michael

+0

그냥 ToArray() 메서드를 사용해야한다고 생각합니다. 또는 루프를 foreach가 아닌 traditional for와 같이 더 의미있는 것으로 다시 작성합니다. 인덱스 변수 ... foreach를 사용하는 목적을 막지 않습니까? 게다가 배열을'list.Count()'로 초기화하십시오. – evanmcdonnal

답변

4

채우려는 배열을 초기화하지 않습니다.

String[] Array = new String[list.Count] 

문제를 해결해야합니다.

이렇게하면 [list.Count] 문자열 배열이 만들어집니다. 값을 지정할 때까지 해당 문자열 각각이 null이라는 사실을 알고 있어야합니다.

MSDN Arrays

0

변경 라인은

String[] Array = new String[list.Count]; 

당신은 배열을 초기화 할 필요가

1

작동해야 배열을 초기화하는

String[] Array = new String[list.Count]; 

하거나

String[] Array =list.Select(x=>x.Value.ToString()).ToArray(); 
+0

당신이'list.Select (r => r.Value.ToString())를 의미하는 것 같아요. ToArray()' – Habib

+0

@Habib ahh..index.thx – Anirudha