2016-10-12 3 views
-1

これはおそらく本当に短い答えですが、私はその構文を知らず、お互いに依存するクラスの複数のインスタンスを必要とします。

私はこれを持っていますが、ゲームのインスタンスが別の機能のために見つからないため、動作しません。

私が見つけることができるリソースのすべては、メソッドの外/間の参照文字列やオブジェクトですが、オブジェクトや変数を使って言いましたが、それは行くことができません。なぜなら、私がそれを行うときには、購入前にそれを作成する購入方法は、それが第2の機能に入る直前にゲームを常にヌルにクリアするからです。C#ある関数でクラスのインスタンスを作成して別の関数でその同じインスタンスを使用する方法

public void Go() 
    { 
     MockFiler Mock = new MockFiler("###\n# #\n#@#\n###"); 
     Game game = new Game(Mock); 
     game.Load("h:\theFileNameDoesNotMatterAsItReturnsAString"); // All gets created fine and used fine 

     string Level = game.Level; 
     View.ShowGame(Level); // Some winforms code in here 
    } 


    // As soon as trigger is setoff in the winforms code it calls this function 
    // as soon as the attention point comes back in this class to here the game is == null 
    public void PassMove(Direction Direction) 
    { 
     game.Move(Direction); // so the instance of game becomes null and i cant call this function inside it 
     string Level = game.Level; 
     View.ShowGame(Level); 
    } 

私は、最初の方法の外でゲームを呼び出すと、その第一の方法の内側にそれを設定するようにそれらのもののすべてを試してみましたが、それは常にそれをクリアします。私はMockFilerを適切に設定していないか、アクセシブルであるか少しばかげていることに注意してください。

+1

あなたはいくつかの研究を行なったし、あなたが見つかった答えを試みたが、あなたはどのような研究を説明していないと言いますやってしまったことを示すコード例も提供していません。あなたが試したことを正確に示す良い[mcve]が含まれるように質問を修正し、そのコードが何をしているのか、そして何をしたいのかを正確に説明してください。他のStack Overflowに関する質問を参照したことがある場合は、あなたが見たものとその理由を説明してください。 –

答えて

1

あなたがゲームとMockFilerの両方のためのグローバルインスタンスを作成する必要があり、それは両方の機能の外になり、

//Creating instance and passing 
MockFiler Mock = new MockFiler("###\n# #\n#@#\n###"); 
//Creating instance for Game 
Game game = new Game(Mock); 
//Now these can be accessed anywhere within the methods 
public void Go() 
    {   
    game.Load("h:\theFileNameDoesNotMatterAsItReturnsAString"); 
    string Level = game.Level; 
    View.ShowGame(Level); 
}  
public void PassMove(Direction Direction) 
{ 
    game.Move(Direction); 
    string Level = game.Level; 
    View.ShowGame(Level); 
} 
+1

上記の答えは、OPの苦情にどのように対処しているのですか?_「2番目の関数に入る直前にゲームを常に0にクリアします」_? 'game'フィールドのイニシャライザは、' Go() 'メソッドで宣言された' Mock'ローカル変数にどのようにアクセスしますか?あなたの答えはたくさん残っているように思えます。 –

+0

@PeterDunihoはい私は、MockFilerもパラメータとして必要であることを実感しています。私はそれを変更しました – Sajeetharan

+0

グローバルインスタンシエーションはコンストラクタ内に置く必要があります – Sherlock

関連する問題