2015-01-03 4 views
0

최종 사용자가 원하는대로 캔버스에 많은 폴리 ​​라인을 추가 할 수 있도록 폴리 라인 배열을 만들려고합니다. 코드는 실행되지 않고 디버깅이 가능합니다. " 호출 대상에 의해 예외가 발생했습니다. " 다음은 배열의 요소 0에서 폴리 라인 인스턴스를 생성하지 않기 때문에 당신은 null 참조 예외가 코드C#의 폴리 라인 배열이 실행되지 않습니다

Polyline[] linije = new Polyline[10];   
linije[0].Stroke = System.Windows.Media.Brushes.Black;   
linije[0].StrokeThickness = 1;   
linije[0].Points = poli.Points;   
canvas1.Children.Add(linije[0]); 
+0

어떤 줄에 예외가 발생합니까? 귀하의 코드는 샘플 2 행에 null 참조 예외를 던져야합니다. – DaveShaw

+3

배열을 선언하면 폴리 라인만으로는 충분하지 않습니다. 배열의 모든 슬롯에 대해 Polyline 객체 인스턴스를 만들어야합니다. – Steve

답변

2

의 일부입니다.

Polyline[] linije = new Polyline[10];  
linije[0] = new Polyline(); // Create the Polyline object!!! 
linije[0].Stroke = System.Windows.Media.Brushes.Black;   
linije[0].StrokeThickness = 1;   
linije[0].Points = poli.Points;   
canvas1.Children.Add(linije[0]); 

특정 유형의 배열을 만들면 해당 배열의 각 요소에 대한 객체가 만들어지지 않습니다. the debugger을 사용하면 쉽게 확인할 수 있습니다. 라인 Polyline[] linije = new Polyline[10] 다음에 중단 점을 추가하고 linije [0]에 대한 감시를 추가하면 null임을 알 수 있습니다.