Можно ли вызывать нестатическую функцию внутри статической функции в C #?

Можно ли вызвать нестатическую функцию, которая использует открытый нестатический класс внутри статической функции в C #?

<code>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();
    }
}
</code>

Ну, неправильный код, как указано выше, это то, что мне нужно.

Любая идея?

Ответы на вопрос(5)

Нестатические функции, по определению, требуют экземпляра класса. Если вы создаете экземпляр вашего класса в статической функции или у вас есть статическое свойство Instance в вашем классе, вы можете через эту ссылку на объект.

ического метода. Например

public static void MyStaticFunc(Program p) {
  p.myNonStaticFunction();
}
Решение Вопроса

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

    public MyProgram()
    {
        thd = new Thread(() => myStaticFunction(this));
        thd.Start();
    }

    public static void myStaticFunction(MyProgram instance)
    {
        instance.myNonStaticFunction();
    }

    private void myNonStaticFunction()
    {
        myAnotherClass.DoSomethingGood();
    }
}
 drowneath27 июн. 2009 г., 19:29
Большое спасибо! Ты спас мой день

то да, вы можете вызывать методы для нее.

Это не совсем ответ на вопрос, который вы задали, но он позволит вам вызывать метод так, как вы хотите.

вам нужен экземпляр класса, к которому принадлежит функция. Похоже, вам нужно переосмыслить, почему вам нужна статическая функция для вызова нестатической функции. Может быть, вы ищетеодиночка шаблон ?

Или, может быть, вы просто должны передать нестатическую функцию в новый поток ()

Ваш ответ на вопрос