2010-12-07 12 views
2

Ich habe ein Objekt namens Participant erstellt. Jetzt möchte ich ein Array meiner Participant-Objekte haben, damit ich sie in einem Datagrid anzeigen kann.Array gibt die gleichen Werte für alle Indizes zurück

Hier sind die Codes Ich habe versucht (zum besseren Verständnis des Problems, entfernte ich die Schleifen und Datagrid-Codes):

Participant[] list = new Participant[count]; 
Participant one = new Participant(name, address); 
Participant two = new Participant(name2, address2); 

list[0] = one; 
list[1] = two; 

Allerdings, wenn ich Werte von einem Teilnehmer erhalten, wie durch eine messagebox auf diese Weise ,

MessageBox.Show(list[0].getName()); 

alles, was es widerspiegelt, sind die Daten von Teilnehmer zwei. Dasselbe gilt, wenn ich 3 Objekte habe, alles was es reflektiert, sind die Daten, die zuletzt in das Array gesendet wurden.

Ich weiß, dass es möglich ist, Array von Objekten zu haben, so dass es etwas geben muss, was ich falsch mache. Oder gibt es einen besseren Weg, dies zu tun?

+7

Ich denke, Sie möchten vielleicht etwas von Ihrem Looping-Code zeigen, meine Annahme ist, dass Ihr Problem da ist. –

Antwort

5

Mit dem Code wie dargestellt, ist die einzige Möglichkeit, die ich verursachen kann, wenn das Backig-Feld (in) wurde "static" deklariert. Wenn ja, entfernen Sie die "static".

Sonst; macht der eigentliche Code eine "new" für die beiden Objekte? Oder überschreibt es ein Objekt, nachdem es dem Array hinzugefügt wurde? (was bedeutet, dass Sie das gleiche Objekt zweimal im Array haben).

Ich würde erwarten, ReferenceEquals(list[0], list[1]) falsch in einer gesunden Welt zu sein - können Sie dies testen und lassen Sie es uns wissen?

Schlussgedanke; Gibt es einen "foreach" im echten Code? Es könnte die sein ...

+0

Ich frage mich, ohne den Code zu sehen. Wieso kannst du so viel diskutieren? Haben Sie einen Fehler Encylopedia:] –

+0

@Jason - vielen Dank für die Formatierung; iPod fehlt Backtick ... –

+1

@karthik - Ich bin es gewohnt zu lesen zwischen sehr schwachen Linien ... –

0

Wenn Sie eine Schleife zum Füllen Ihres Arrays verwenden, müssen Sie den Schleifenindex als Index des Arrays verwenden, wenn Sie den Teilnehmer zuweisen.

0

Debuggen ist eine unterschätzte Fähigkeit ... Setzen Sie einen Haltepunkt in der Zeile, wo Sie das Array erstellen und Liste als Uhr hinzufügen, und erweitern Sie es, so dass Sie den Inhalt sehen. Durchlaufen Sie Ihren Code und bewegen Sie die Maus über die Parameter, während Sie die Teilnehmer erstellen, um die übergebenen Werte zu sehen. Übergehen Sie die Statements, die sie zur Liste hinzufügen, und überprüfen Sie in Ihrer Uhr, dass das korrekte Element und die Werte jedes Mal im Array sind und dass die vorhandenen Werte nicht geändert wurden.

+0

Debugging war mein bester Freund während der Programmierung.Ich habe es schon eine ganze Weile mit diesem Code gemacht, mir ist einfach nicht aufgefallen, dass die Variablen statisch gesetzt wurden. Trotzdem danke! :) – iamnobody

Verwandte Themen