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

2

Можно ли вызвать нестатическую функцию, которая использует открытый нестатический класс внутри статической функции в 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   ответов
1

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

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

0

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

3

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

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

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();
    }
}
Большое спасибо! Ты спас мой день drowneath
0

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

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

Похожие вопросы