2016-06-14 13 views
0

再帰的な方法で配列を渡すより簡単な方法は、文字列に変換してメソッド内で再度アセンブルして、その配列の前のインスタンスを使用するgametreeの中で。配列の状態を再帰的メソッド内に保持する

このメソッドは、必要な深さに達するまでループし、すべての可能なゲーム状態がマップされるまでバブルアップします。

例の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 -system-array-cloneです。 – PhillipH

+0

私はchild.execute(mapArr.toList()。toArray())を試してみました。 しかし、それはまだ間違ったインスタンスを変更します。( – Kortgat

+0

@Kortgatはクローンまたはコピーを使用します。私はtoListtoArrayのことについて100%確信していません。 – Master117

関連する問題