2013-06-01 49 views
1

我的问题的功能可能是很基本的,但我没有找到答案......C# - 从调用静态主

我Program.cs中 写了一个函数(公共checkSomething即获得2串),当我试图从静态主 调用这个函数,我得到这个错误:

"An object reference is required for a non-static field, method or property 'checkSomething(string,string)' ".

然而,当我改变了我的主要公共(而不是静态) - 没有错误。 为什么会发生这种情况?有什么更好 - 有一个静态主或不?为什么它甚至重要?

谢谢!

+0

把你的函数作为静态,public static checkSomething(string x,string x2) –

+4

你对静态的含义有多少了解? –

+2

@ Pierre-LucPineault:这不一定合适。我们根本无法分辨这么少的信息。目前看起来很清楚的一点是,OP应该更多地了解“static”的含义 - 并且SO不如通过一本书或好的教程IMO那样完成。 –

回答

2

这里的问题不是静态函数,而是为什么mainC#应用程序中是静态的。

它与主应用程序只有一个线程有关。这是在主函数上使用[STAThread]属性时定义的。正在执行的线程仅进入一次主函数,并且不需要类的实例。

静态主函数然后可以实例化正常操作所需的任何类。这些往往是形式或工人类的东西。

程序要么在主线程中输入消息循环来处理可见的窗体,要么程序终止。

当您从startup function移除主要的build options静态参考该项目切换到startup object,并且main被调用之前创建类的实例。

这是一个个人喜好的问题,但请记住,在启动过程中只有一个主要执行。

+0

+1不仅回答确切的问题,而且能够下降到更多的初学者水平,并给出一个有帮助的答案,而不是对OP进行约束。 –

+1

非常感谢你! – nati

1

主要方法应该是静态的,所以你不能从静态方法调用非静态方法。

将checkSomething改为static。

如果main方法不是静态的,那么我们需要创建实例来调用main方法。为了再次创建,我们需要执行一些代码!这就是为什么我认为这个起点Main使静态。