2009-06-27 17 views
2

C#で静的関数内でパブリック非静的クラスを使用する非静的関数を呼び出すことはできますか?C#で静的関数内で非静的関数を呼び出すことはできますか?

public class MyProgram 
{ 
    private Thread thd = new Thread(myStaticFunction); 
    public AnotherClass myAnotherClass = new AnotherClass(); 

    public MyProgram() 
    { 
     thd.Start(); 
    } 

    public static void myStaticFunction() 
    { 
     myNonStaticFunction(); 
    } 

    private void myNonStaticFunction() 
    { 
     myAnotherClass.DoSomethingGood(); 
    } 
} 

私は上記のような無効なコードが必要です。

答えて

1

スレッドにデータを渡したいと思うようです。試してみてください:

+0

ありがとうございます!あなたは私の日を救った –

1

非静的関数を呼び出すには、その関数が属するクラスのインスタンスを持つ必要があります。静的関数を呼び出す静的関数が必要な理由を再考する必要があるようです。 Singletonパターンをお探しですか?

それとも単に新しいスレッド()を直接

3

ない無しに非静的関数に渡す必要があります。非静的メソッドを呼び出すには、プログラムのインスタンスが必要です。例えば

0
public static void MyStaticFunc(Program p) { 
    p.myNonStaticFunction(); 
} 

非静的関数、定義により、クラスのインスタンスを必要とします。静的関数内にクラスのインスタンスを作成するか、クラスに静的インスタンスプロパティを持たせる場合は、そのオブジェクト参照を使用できます。

0

myAnotherClass変数が静的変数として宣言されている場合は、その変数にメソッドを呼び出すことができます。

あなたが尋ねた質問にはそれほど答えはありませんが、あなたが望むやり方でメソッドを呼び出すことができます。

関連する問題