是否可以在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(); } } 

好吧,上面的无效代码就是我需要的。

任何的想法?

听起来你想将数据传递给你的线程。 试试这个:

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

不是直接没有。 您必须具有Program的实例才能调用非静态方法。 例如

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

要调用非静态函数,您需要拥有函数所属类的实例,似乎需要重新考虑为什么需要静态函数来调用非静态函数。 也许你正在寻找Singleton模式?

或许你应该只将一个非静态函数传递给新的Thread()

没有。

根据定义,非静态函数需要一个类实例。 如果在静态函数中创建类的实例,或者在类中具有静态Instance属性,则可以通过该对象引用。

如果myAnotherClass变量声明为static,则是,您可以在其上调用方法。

这不是你提出的问题的答案,但它允许你以你想要的方式调用方法。