当前位置: 首页 > 编程语言 > C#

在C#中是否可以在静态函数内部调用非静态函数?分享

时间:2023-04-10 12:25:05 C#

C#中静态函数内部可以调用非静态函数吗?在C#中是否可以在使用公共非静态类的静态函数中调用非静态函数?publicclassMyProgram{privateThreadthd=newThread(myStaticFunction);publicAnotherClassmyAnotherClass=newAnotherClass();publicMyProgram(){thd.Start();}publicstaticvoidmyStaticFunction(){myNonStaticFunction();(){myAnotherClass.DoSomethingGood();好吧,上面的无效代码就是我需要的。有任何想法吗?听起来您想将数据传递给您的线程。试试这个:publicclassMyProgram{privateThreadthd;publicAnotherClassmyAnotherClass=newAnotherClass();publicMyProgram(){thd=newThread(()=>myStaticFunction(this));thd.Start();}publicstaticvoidmyStaticFunction(MyPrograminstance){instance.myNonStaticFunction();}privatevoidmyNonStaticFunction(){myAnotherClass.DoSomethingGood();}}不是直接什么都没有。您必须有一个Program实例才能调用非静态方法。例如publicstaticvoidMyStaticFunc(Programp){p.myNonStaticFunction();要调用非静态函数,您需要拥有该函数所属类的实例,看来您需要重新考虑为什么需要静态函数来调用非静态函数。也许您正在寻找单例模式?也许您应该只将非静态函数传递给newThread()否。根据定义,非静态函数需要一个类实例。如果您在静态函数中创建一个类的实例,或者如果您的类中有一个静态实例属性,您可以传递该对象引用。如果myAnotherClass变量被声明为静态的,那么是的,您可以调用它的方法。这不是您提出的问题的答案,但它允许您以您想要的方式调用方法。以上是C#学习教程:C#中可以在静态函数内部调用非静态函数吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: