Ich versuche, den Wert in der inneren Liste durch Iterieren der Liste zu ändern. Allerdings bekomme ich das gleiche Ergebnis für die innere Liste unabhängig von der äußeren Liste. Ich erwarte das Ergebnis der maxSpeed
ist für verschiedene Fahrzeuge unterschiedlich.Ändern der Liste in der Liste in C#
Hoffe jemand könnte dabei helfen.
Beachten Sie, dass dies kein Zufallsgeneratorproblem ist. Dies ist nur ein Beispielcode, den ich produziere, und dieses Problem existiert in meinem Projektcode ohne die Verwendung von Zufallszahlengenerator.
List<Vehicle> mainList = new List<Vehicle>();
List<Properties> defaultPropertyList = new List<Properties>{
new Properties() { maxSpeed = 0, isTwoDoor = true },
new Properties() { maxSpeed = 0, isTwoDoor = true },
};
mainList.Add(
new Vehicle() {
number = 1,
property = new List<Properties>(defaultPropertyList)
}
);
mainList.Add(
new Vehicle() {
number = 2,
property = new List<Properties>(defaultPropertyList)
}
);
foreach(Vehicle vehicle in mainList) {
Random rnd = new Random();
vehicle.property.ForEach(x => x.maxSpeed = rnd.Next(1, 100));
}
Versuchen Sie, den Zufallszahlengenerator auf Saatgut – Gururaj
um bessere Ergebnisse zu erhalten, wenn Sie 'Properties' eine Klasse ist, dann wird es als Referenz übergeben werden. Auf diese Weise erhalten beide Fahrzeugobjekte eine eindeutige Liste. Jede eindeutige Liste enthält jedoch Verweise auf die ** gleichen ** 'Properties'-Objekte. Kopieren Sie Ihre Objekte oder verwenden Sie Werttypen (wie eine Struktur). – Adwaenyth
@Gururaj Ich glaube nicht, dass es ein Problem des Zufallszahlengenerators ist, basierend auf dem Ergebnis. – vincentsty