c # - Sidst tilføjet Liste element overskrivning andre

Indlæg af Hanne Mølgaard Plasc

Problem



    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();


Okay, så jeg gør et lille program til at hjælpe mig og mine venner/girldfriend vælge en film, når vi keder os. Åbenbar funktionalitet omfatter tilføjelse af en ny film til listen. Jeg har tilføjet etiketterne til testning, for hver gang jeg tilføjer film til listen, overskriver den sidste alle de andre.


Jeg har set på de få spørgsmål/tråde, jeg kunne finde på dette problem, og jeg kan ikke se hvordan i jorden alle objekter på en eller anden måde refererer til det samme objekt. Kunne gøre med lidt hjælp.

Bedste reference


Prøv at ændre:


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


Til:


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


Årsagen er, at du gemmer og får adgang til klassen Movie ToString(), ved ikke præcis, hvordan du vil udskrive den, medmindre du tilsidesætter strengmetoden.


Du sagde ikke eksplicit, så jeg antager ikke, at du har tilsidesat metoden ToString (). Hvis du gjorde det, skal du sende den kode og enhver anden relevant kode fra din Movie klasse.

Andre referencer 1


Den kode er fint, forudsat at du bare nærmer dig, hvad din kode gør (ignorerer syntaksfejl). Problemet er højst sandsynligt i din brugerdefinerede film ToString() implementering.