我的问题可能是非常基本的,但我没有找到答案…
我写了一个函数(公共checkSomething得到2个字符串)在program.cs当我试图从静态main调用这个函数时我得到了这个错误:
"非静态字段、方法或property 'checkSomething(string,string)' ".
然而,当我将main改为Public(而不是static)时,没有错误。为什么会这样呢?有静态main还是没有更好?这有什么关系呢?
谢谢!
这里的问题不是关于静态函数,而是具体地说,为什么main
在C#
应用程序中是静态的。
这与主应用程序只有一个线程有关。这是在main函数上使用[STAThread]
属性时定义的。执行线程只进入main函数一次,不需要Program
类的实例。
程序或者在主线程中进入一个消息循环来处理一个可见的形式,或者程序终止。
当您删除main的静态引用时,项目的build options
从startup function
切换到startup object
,并且在main
被调用之前创建类的实例。
这是个人喜好的问题,但请记住,在启动期间只执行一个main。
主方法应该是静态的,所以你不能从静态方法调用非静态方法。
change checkSomething to static.
如果main方法不是静态的,那么我们需要创建实例来调用main方法。要再次创建instant,我们需要执行一些代码!这就是为什么我认为Main
的起点是静态的