När du säger cycles = addedCycles pekar på båda referenserna på samma objekt. Det du vill göra är att göra en cycles till en ny lista med samma innehåll som addedCycles, List har en konstruktor som tar emot en IEnumerable som är lämplig för att kopiera andra listor. (Ändrar du på CCycle-elementen i listan får du göra den kopieringen du visar. En bättre idé vore kanske dock att fixa din kod så att du inte ändrar på objekten...)
Jag har en funktion som gör lite kontroller om det finns ett object med samma datum som det jag söker efter och isf. ska den utföra lite åtgärder. Funktionen ser ut såhär:
Public Function CheckWeekRestSchedule(ByVal addedCycles As List(Of CCycle), ByVal schedule As CSchedule) As Boolean
Dim r_value As Boolean = True
Dim today, tomorrow, lastUsed As New CCycle
Dim i, y As Integer
Dim daysPassed As Integer
Dim newCycle As CCycle
Dim firstCycle As New CCycle
Dim newDate As Date
Dim x As Integer = 0
Dim cycles As New List(Of CCycle)
cycles = addedCycles
' I denna så börjar det att strula
Do Until x = schedule.ScheduleWeekBreak
newCycle = New CCycle
newDate = Format(DateAdd(DateInterval.Day, (7 * schedule.ScheduleCycles) + x, Now), "Short Date")
newCycle = New CCycleFinder(cycles, Format(DateAdd(DateInterval.Day, x, Now), "Short Date")).Found
newCycle.CycleDate = newDate
cycles.RemoveAt(New CCycleIndexFinder(cycles, newCycle.CycleDate).Found)
cycles.Add(newCycle)
x = x + 1
Loop
cycles.Sort(AddressOf CCycle.CompKeysByName)
' Massa kod som inte har med frågan att göra
Return r_value
End Function
Problemet är att den listan med ccycles som jag skickar med här (addedCycles) modifieras även den och det vill jag inte utan jag vill endast att det ska vara i just denna funktion som den aktuella listan (cycles) justeras. Jag kör inte med ByRef så jag har lite svårt att förstå varför det blir fel. Om jag lägger till denna funktion före stället så fungerar det bra men det ser ju hemskt ut.
For Each c As CCycle In addedCycles
newCycle = New CCycle
newCycle.CycleDate = c.CycleDate
newCycle.CycleStartTime = c.CycleStartTime
newCycle.CycleEndTime = c.CycleEndTime
newCycle.CycleBreak1Start = c.CycleBreak1Start
newCycle.CycleBreak1End = c.CycleBreak1End
newCycle.CycleBreak2Start = c.CycleBreak2Start
newCycle.CycleBreak2End = c.CycleBreak2End
newCycle.CycleBreak3Start = c.CycleBreak3Start
newCycle.CycleBreak3End = c.CycleBreak3End
newCycle.CycleCycle = c.CycleCycle
newCycle.CycleDay = c.CycleDay
cycles.Add(newCycle)
Next
Ser någon vad det är jag missar? Jag har antagligen snubblat över någon superenkel programmeringslogik men är man helt självlärd så missar man en hel del grundläggande saker ;)
