2016-06-14 2 views
0

Есть ли более простой способ передать массив через рекурсивный метод, чем преобразовать его в строку и снова собрать его внутри метода, чтобы сохранить предыдущий экземпляр этого массива для использования внутри игры.Сохранение состояния массива внутри рекурсивного метода

Метод только петли до достижения желаемой глубины и пузырится до тех пор, пока не будут отображены все возможные состояния игры.

Пример 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); 
    } 
} 

ответ

2

Вы хотите скопировать или клонировать массив, вместо того, чтобы ссылаться на него.

child.execute(mapArr.Clone()); 

или

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

В качестве альтернативы Array.Copy и Array.Clone, как описано здесь, http://stackoverflow.com/questions/198496/difference-between-the-system-array-copyto-and -системы-массив-клон. – PhillipH

+0

Я попробовал child.execute (mapArr.toList(). ToArray()); , но где-то вдоль строки он все еще меняет неправильный экземпляр :( – Kortgat

+0

@Kortgat использовать Clone или Copy, я не уверен на 100% в отношении toListtoArray. – Master117

Смежные вопросы