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);
}
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, eine Liste von Referenz-Typen ist eigentlich nur eine Liste von Referenzen.
Erstellen Sie eine neue Instanz für jedes Objekt, das Sie speichern möchten, in der Liste.
Auch, die
Contains
Methode vergleicht die Verweise, also zwei Objekte enthalten die gleichen Daten sind nicht als gleich zu sein. Suchen Sie nach einem Wert in der Eigenschaften der Objekte in der Liste.InformationsquelleAutor Guffa
tempDropDown
ist das gleiche Objekt während der gesamten Schleife. Sie müssen eine neue Instanz erstellen, wenn Sie hinzufügen möchten mehr als eine.Ich habe eine harte Zeit versucht, herauszufinden, was genau Ihr ' E versucht, zu tun mit dem hinzufügen, dass tempDropDown auf die Liste.
um ehrlich zu sein, es war nicht meine Idee...die Liste der Frachten wird zurückgegeben JSON (es verwendet wird, durch eine app) und mir wurde gesagt, erstellen Sie eine separate Liste mit allen möglichen Werten für die einzelnen Träger/ - Modus, so dass der Benutzer kann die Ergebnisse filtern weiter (wenn Sie wollen)...für mich, würde es Sinn machen, dass die Liste der einzigartigen Werte geschaffen werden, indem die app...sollte ich einfach nur wieder die Liste von Frachten...aber...ja...
InformationsquelleAutor hometoast