2017-12-12 12 views
-3

あるクラスから別のクラスのメソッドを使用しようとすると問題が発生します(メソッドはMainで正常に実行されます)。私のMainではBoardboardRendererとしてrendererとしてインスタンス化しますが、それらをstaticにしない限りそのインスタンスのメソッドを使用することはできませんが、理由はわかりません。名前空間は同じですが、私は答えを探しましたが、理解できませんでした。私はここに何か基本的なコンセプトがないと思う。非スタティックにオブジェクト参照が必要です

class MainClass 
{ 
    public static void Main (string[] args) 
    { 
     Console.WriteLine ("Main Test is working."); 

     Board board = new Board(); 
     Renderer render = new Renderer(); 

     board.MyBoard(); 

     } 

    } 
} 

public class Renderer 
{ 
    public Renderer() 
    { 
     Console.WriteLine ("Renderer is up and instantiated."); 
    } 

    public void Render() 
    { 
     Console.WriteLine ("Render is up and instantiated."); 
     Console.WriteLine ("Render is REALLY up."); 

    } 
} 


public class Board 
{ 
    public Board() 
    { 
     Console.WriteLine ("Board is up and instantiated."); 


    } 

    public void MyBoard() 
    { 
     Console.WriteLine ("My Board is up."); 

     Renderer.Render();//here's where I get the error 

    } 
} 

答えて

-1

Render()Rendererクラスの非静的メソッドです。クラスのためだけに呼び出すことはできません。メソッドを呼び出すことができるRendererクラスのインスタンスが必要です。返信用

public class Board 
{ 
    public Board() 
    { 
     Console.WriteLine ("Board is up and instantiated."); 
    } 

    public void MyBoard (Renderer renderer) 
    { 
     Console.WriteLine ("My Board is up."); 

     renderer.Render(); 
    } 
} 

class MainClass 
{ 
    public static void Main (string[] args) 
    { 
     Console.WriteLine ("Main Test is working."); 

     Board board = new Board(); 
     Renderer render = new Renderer(); 

     board.MyBoard(render); 
    } 
} 
+0

感謝を:ちょうどMyBoard()方法にレンダラのインスタンスを渡すと、このインスタンスにRender()を呼び出し、このコンパイルエラーを修正するには

。私がメインでやっていることではない? "Renderer render = new Renderer();"それともメイン以外の場所に置く必要がありますか?ありがとう。 – Novacaine31

+0

私の答えの更新を見てください。 – CodeFuller

+0

これは機能します。どうもありがとうございます。今、私は流れとそれがどのように設定される必要があるのか​​を理解しています。これを本から学ぶことは、本当に誰にでも尋ねることはできません。おそらく簡単な質問ではありません。 – Novacaine31

関連する問題