2013-03-12 3 views
-1

저는 C#을 처음 접했고 C#을 탐색하려고합니다. 그러나 목록 상자에 목록을 추가하려고합니다.목록 상자에 목록 삽입

내가 겪고있는 오류는 다음과 같습니다. Object reference not set to an instance of an object. 어떻게 해결할 수 있을까요?

namespace WindowsFormsApplication 
{ 
    public partial class Form1 : Form 
    { 
     something a = something iets(); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 
// part1 
     class something { 

      public List<string> testing { get ; set; } 
     } 

// part2 
     private void button1_Click(object sender, EventArgs e) 
     { 
      a.testing.Add("programming"); 
      a.testing.Add("over"); 
      a.testing.Add("something"); 



      foreach (string i in a.testing) 
      { listBox1.Items.Add(i); } 
     } 
    } 
} 
+0

당신은 목록 테스트가 이제 널 쓰기 메모리를 할당 할 필요가 당신은 널 (null)에 값을 추가 기운 다. – JSJ

+4

'something a = something iets();'의심스러운 것 같습니다. 나는 컴파일을 기대하지 않을 것이다. –

+1

_C# _... –

답변

3

액세스하기 전에 어느 시점에서 testing을 초기화해야합니다.

아마도 무언가 클래스에 생성자를 추가 할 수 있습니다.

public something() 
{ 
    testing = new List<string>(); 
} 

위의 댓글에서 지적했듯이, 이하 이와

something a = something iets(); 

를 교체합니다.

something a = new something(); //this should be the correct thing. 
+0

아를 입력하면 무슨 뜻인지 알 수있다. 마지막 단어의 이름을 바꾸는 것을 잊었다. something = 새로운 무언가(); 미안해, 고마워, 너의 예를 더 깊이 생각해 보자. – mrName

1

클래스 "something"은 목록을 초기화하지 않습니다. 당신이해야 할 일은 이것입니다.

class something{ 
private List<string> _list; 
public something(){ 
    _list = new List<string>(); 
} 

public List<string> testing {get{return _list;} set{_list = value;}} 

}

또는 a.testing.Add()는 (a.testing = 새로운 목록을 수행해야합니다) 당신의 줄 앞에

;

+0

아, 고마워. 이제는 내가 "초기화하지 않았기 때문에"인스턴스가 아니라는 이유를 알았어. 고마워. 자, 우리 모두는/언젠가는 xD 오류를 배워야했습니다. – mrName

2

나는 NullReferenceException을 얻는 이유는 클래스 something에있는 문자열 목록이 초기화되지 않는다고 생각합니다. 매개 변수없는 생성자를 정의하고 그 목록을 초기화 할 수 있습니다.

public something() 
{ 
    testing = new List<string>(); 
} 

는 또한 클래스와 특성 이름의 첫 글자는 일반적으로 (예를 들어 class Something 대신 class something의) 대문자 것을 알고 할 수 있습니다.

또한 foreach 루프에서 문자열을 하나씩 추가하는 대신 AddRange 메서드를 사용할 수 있습니다.

listbox1.Items.AddRange(a.testing.ToArray()); 
+0

배열을 구현하거나리스트 박스 텍스트 상자 등과 같은 다른 객체에리스트하는 방법에 대해 더 많은 방법을 알았습니다. 나는 너의 도움에 정말로 감사한다. – mrName

관련 문제