最后添加的List元素覆盖其他元素

时间:2011-04-25 09:31:42

标签: c# windows forms

    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在我们无聊时选择一部电影。明显的功能包括在列表中添加新电影。我在那里添加了标签进行测试,因为每次我将电影添加到列表中,最后一个都会覆盖所有其他标签。

我已经查看了我可以在这个问题上找到的几个问题/线程,我看不出地球上的所有对象是如何以某种方式引用相同的对象。可以做一些帮助。

2 个答案:

答案 0 :(得分:0)

该代码很好,假设您只是近似代码所做的(忽略语法错误)。问题很可能出在您的自定义电影ToString()实施中。

答案 1 :(得分: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;

原因是您正在存储和访问MovieToString(),除非您覆盖字符串方法,否则无法确切地知道如何将其打印出来。

你没有明确说出来,所以我不会假设你已经覆盖了ToString()方法。如果您这样做,那么您需要发布该代码以及Movie类中的任何其他相关代码。