2014-04-20 2 views
0

이의 인스턴스로 설정되지 않았습니다 것은 내 코드 DTgraph는 데이터 테이블입니다개체 참조가 object.exception

var dictionary = new Dictionary<string, List<Int64[][]>>(); 
for (int i = 0; i < compainNames.Count(); i++) 
{ 
    List<Int64[][]> data = new List<Int64[][]>(); 
    var dataForOneCampaint = DTgraph.Select("Campaign = '" + compainNames[i].CampaignName.ToString() +"'").ToList(); 
    for (int j = 0; j < dataForOneCampaint.Count(); j++) 
    { 
     Int64[][] array = new Int64[1][]; 
     array[0][0] = (Int64)dataForOneCampaint[j].Field<Decimal>("Inb.ServiceLevel"); 
     DateTime d = DateTime.Parse(dataForOneCampaint[j].Field<string>("Date").ToString()); 
     array[0][1] = d.Ticks; 
     data.Add(array); 
    } 
    dictionary.Add(compainNames[i].ToString(), data); 
} 

입니다. array[0][0] = (Int64)dataForOneCampaint[j].Field<Decimal>("Inb.ServiceLevel");

나는 dataForOneCampaint 16 개 값을 가지는 것을 알 수 있습니다 :

나는이 예외이 라인에 {"Object reference not set to an instance of an object."}

을 얻었다.

및이 필드에서 Inb.ServiceLevel을이 코드에서 사용한 것과 똑같은 다른 함수로 사용했습니다.

어디에서 잘못하고 있습니까?

+0

배열 [0] [0] 존재 하는가 : 당신이 다음을 수행해야합니다 귀하의 경우

? 내 C#은 약간 녹슬었지만 배열 [0]에 할당 된 것이 전혀없는 것처럼 보입니다. – user3553031

+0

@SriramSakthivel 중복되지 않습니다. – user2208349

+0

이것이 문제의 올바른 데이터 구조입니까? 2 차원 배열의 목록은 구조가 다소 복잡한 유형입니다. 먼저 객체 유형 목록을 사용하여 상황을보다 쉽게 ​​읽을 수 있도록 제안합니다. – PMF

답변

4

가변 배열 초기화는 외부 치수에 대해 한 번, 각 내부 배열에 대해 한 번 두 번 수행해야합니다. MSDN에서보다 정확하게 설명됩니다 : Jagged Arrays (C# Programming Guide).

Int64[][] array = new Int64[1][]; 
array[0] = new Int64[2]; 
+0

유청은 사용자 '2'를 했습니까? 나는이 종류가 필요합니다. [[1,4] [5,1] ... [44,1]] 그래서 그것은 단지 하나 일 것 같아요, 그렇죠? – user2208349

+0

나중에 코드에서'array [0] [0]'과'array [0] [1]'에 값을 할당하기 때문에'2'를 사용했습니다. 즉, 내부 배열에 2 개의 항목이 필요하기 때문입니다. – MarcinJuraszek

+0

작동합니다. 나는 일단 시스템이 허용하면 대답을 수락 할 것이다. +1 – user2208349