2011-04-25 2 views
1
private List<Movie> movies = new List<Movie>(); 
    Movie _movie; 

    _movie = new Movie(); 
    movie.Title = "test2"; 
    _movie.Year = "1992"; 
    movies.Add(_movie); 

    _movie = new Movie(); 
    _movie.Title = "test2"; 
    _movie.Year = "1992"; 
    movies.Add(_movie); 

    _movie = new Movie(); 
    _movie.Title = "test3"; 
    _movie.Year = "1992"; 
    movies.Add(_movie); 

    label8.Text = movies[0].toString(); 
    label9.Text = movies[1].toString(); 
    label10.Text = movies[2].toString(); 

좋아, 그래서 우리가 지루할 때 내 친구/girldfriend 도움이되는 작은 프로그램을 만들고있어. 명백한 기능에는 목록에 새 영화를 추가하는 기능이 포함됩니다. 테스트 할 레이블을 추가했습니다. 목록에 영화를 추가 할 때마다 마지막 레이블이 모든 레이블을 덮어 씁니다.마지막으로 추가 된 목록 요소 overwrtiting others

이 문제에서 찾을 수있는 몇 가지 질문/스레드를 살펴본 결과 모든 개체가 어쨌든 동일한 개체를 참조하고있는 것을 볼 수 없습니다. 약간의 도움으로 할 수 있습니다.

+3

위 코드가 실패한 것이 확실합니까? Movie 클래스의 구현을 공유 할 수 있습니까? BTW, 처음 두 영화 같은 제목이 있습니다. – VinayC

+0

어떻게 ToString 메서드 또는 자신의 tostring 메서드를 재정의했는지 표시 코드 – V4Vendetta

+0

코드를 모두 붙여 넣을 수 있습니까? 이것은 의사 코드처럼 보입니다. ~ 5 번째 줄에는 "영화"에 밑줄이없고 끝 부분에 소문자 toString()이 붙어 있습니다. – skaz

답변

0

한번에 변경 :

label8.Text = movies[0].toString(); 
    label9.Text = movies[1].toString(); 
    label10.Text = movies[2].toString(); 

사람 :

label8.Text = movies[0].Title; 
    label9.Text = movies[1].Title; 
    label10.Text = movies[2].Title; 

이유는 당신이 저장하고 당신이하지 않으면 그것을 밖으로 인쇄 할 정확히 모르는 Movie 클래스 ToString()에 액세스하는 것입니다 string 메소드를 오버라이드 (override)합니다.

ToString() 메서드를 재정의했다고 가정하지 않으려 고하지 않았습니다. 그렇게했다면 코드와 Movie 클래스의 다른 관련 코드를 게시해야합니다.

+0

글쎄요, 문제가 완전히 어리 석다는 것을 깨달았습니다. 우연히 모든 것을 만들었습니다. 내 변수 정적 ...하지만, 적어도 toString() toString()을 재정의해야한다는 것을 배웠습니다. – steve

0

코드가 정상적으로 처리되었다는 가정하에 (구문 오류 무시) 해당 코드는 문제가 없습니다. 이 문제는 사용자 정의 Movie ToString() 구현에서 발생할 가능성이 큽니다.

관련 문제