Liste.fügen Sie scheint zu sein, das hinzufügen einer Referenz auf das ursprüngliche Objekt?

Erstellt habe ich ein paar custom-Klassen (NTDropDown und NTBaseFreight), die ich verwenden, um Daten zu speichern, die ich abrufen, aus einer DB. Initialisiere ich eine Liste von NTBaseFreight und 2 Listen für NTDropDown.

Kann ich erfolgreich nutzen List.Add hinzufügen Frachten die Fracht Liste, aber wie ich das Debuggen Sie den code, meine 2 dropdown-Listen enthalten nur 1 NTDropDown, die hat immer die gleichen Werte wie NTDropDown (ich ' m vorausgesetzt, dies ist eine Referenzierung problem, aber was mache ich falsch)?

Um ein Beispiel zu geben, auf die zweite Zeile, wenn der Träger und die carrier_label waren "001", "MyTruckingCompany" und ich legte eine Pause auf der if-Anweisung für frt_carriers beide frt_carriers und frt_modes würde enthalten nur 1 Element in Ihrer Liste mit den Werten "001", "MyTruckingCompany"...die gleichen Werte in NTDropDown.

Code:

List<NTDropDown> frt_carriers = new List<NTDropDown>();
List<NTDropDown> frt_modes = new List<NTDropDown>();
List<NTBaseFreight> freights = new List<NTBaseFreight>();
NTDropDown tempDropDown = new NTDropDown();
NTBaseFreight tempFreight = new NTBaseFreight();

//....Code to grab data from the DB...removed

while (myReader.Read())
{
    tempFreight = readBaseFreight((IDataRecord)myReader);

    //check if the carrier and mode are in the dropdown list (add them if not)
    tempDropDown.value = tempFreight.carrier;
    tempDropDown.label = tempFreight.carrier_label;
    if (!frt_carriers.Contains(tempDropDown)) frt_carriers.Add(tempDropDown);

    tempDropDown.value = tempFreight.mode;
    tempDropDown.label = tempFreight.mode_label;
    if (!frt_modes.Contains(tempDropDown)) frt_modes.Add(tempDropDown);

    //Add the freight to the list
    freights.Add(tempFreight);
}
ok, habe es herausgefunden...ich muss zum initialisieren einer NEUEN NTDropDown jeder Zeit (nicht re-verwenden Sie tempDropDown immer und immer wieder). so, das hinzufügen tempDropDown = new NTDropDrop(); bevor ich es verwenden, jedes mal. Soll ich löschen, diese Frage?
Nein. Verlassen Sie die Frage. Lösen Sie Ihre eigene Frage ist immer noch nützlich für jedermann.

InformationsquelleAutor Irfan jamal | 2012-11-07

Schreibe einen Kommentar