2016-06-14 14 views
0

Gibt es eine einfachere Methode, ein Array durch eine rekursive Methode zu übergeben, als sie in eine Zeichenfolge umzuwandeln und sie innerhalb der Methode erneut zu assemblieren, um die vorherige Instanz dieses Arrays zu verwenden in einem Spielbaum.Den Zustand eines Arrays in einer rekursiven Methode beibehalten

Die Methode wird nur solange durchlaufen, bis die gewünschte Tiefe erreicht ist und aufbläht, bis alle möglichen Spielzustände zugeordnet sind.

Beispiel C#:

public class Gametree 
{ 
    private char[] mapArr; 

    private void execute(char[] map){ 
    mapArr = map; 

    //do stuff to mapArr// 

    var child = new Gametree(); 
    child.execute(mapArr); 
    } 
} 

Antwort

2

Sie möchten Ihr Array kopieren oder klonen, anstatt es zu verweisen.

child.execute(mapArr.Clone()); 

oder

char[] secondMap = new char[mapArr.length] 
Copy(mapArr, secondMap, mapArr.length); 
child.execute(secondMap); 
+0

Alternativ Array.Copy und Array.Clone wie hier beschrieben http://stackoverflow.com/questions/198496/difference-between-the-system-array-copyto-and -System-Array-Klon. – PhillipH

+0

Ich habe versucht, child.execute (mapArr.toList(). ToArray()); aber irgendwo entlang der Linie ändert es immer noch die falsche Instanz :( – Kortgat

+0

@Kortgat verwenden Clone oder Kopieren, ich bin nicht 100% sicher über die toListtoArray Sache. – Master117

Verwandte Themen