zu verlieren Ich habe die folgende Methode:Wie kann man vermeiden Werte mit List
private static Tuple<List<int>, bool> GetTurns(List<int> possibleTurns, IList<int> currentLine)
{
List<int> localPossibleTurns = possibleTurns;
foreach (var passedTurn in passedTurns)
{
for (int j = 0; j < localPossibleTurns.Count; j++)
{
int indexOfNewNumber = currentLine.IndexOf(localPossibleTurns[j]);
if (localPossibleTurns[j] == passedTurn.Item1)
{
if (indexOfNewNumber + 1 == passedTurn.Item2 || indexOfNewNumber == passedTurn.Item2)
{
localPossibleTurns.RemoveAt(j);
}
}
}
}
return localPossibleTurns.Count == 0
? new Tuple<List<int>, bool>(localPossibleTurns, false)
: new Tuple<List<int>, bool>(localPossibleTurns, true);
}
und es in dieser Zeile mit:
if (!GetTurns(possibleRoutes, secondLine).Item2)
{
//do something
}
, wenn es diesen Punkt erreicht er die possibleRoutes
Liste in das Verfahren geht und da die Liste der Referenztyp ist, wann immer ein Wert von dem in der Methode GetTurns
- localPossibleTurns
deklarierten entfernt wird, geschieht dasselbe mit der possibleRoutes
Liste. Wie kann ich das vermeiden und die Werte von possibleRoutes
nur ändern, wenn ich possibleRoutes = GetTurns(possibleRoutes, secondLine).Item1;
mache?
Imo eine 'GetXY ...' Methode, die eine übergebenen Liste ändert, ist nicht ein gutes Design. Wenn ich etwas _get_ etwas will, erwarte ich nicht, dass dort irgendetwas geändert wird. –
@TimSchmelter: Genau das versuchen sie zu verhindern. –