我的问题可能很基本,但我找不到答案......
我在program.cs中编写了一个函数(public checkSomething,获取2个字符串) 当我试图从静态main调用此函数时 我收到了这个错误:
“非静态字段,方法或方法需要对象引用 property'checkSomething(string,string)'“。
但是,当我将main更改为Public(而不是静态)时 - 没有错误。 为什么会这样?什么是更好的 - 有一个静态主要与否?为什么它会重要?
谢谢!
答案 0 :(得分:2)
这里的问题不是关于静态函数,而是main
应用程序中C#
静态的原因。
它与主应用程序只有一个线程有关。这是在main函数上使用[STAThread]
属性时定义的。执行线程只进入一次main函数,不需要Program
类的实例。
然后,静态main函数可以实例化正常操作所需的任何类。这些通常是形式或工人类。
程序要么在主线程中输入一个消息循环来处理可见的表单,要么程序终止。
当您将项目切换的build options
的主要静态引用从startup function
移除到startup object
时,会在main
之前创建该类的实例被称为。
这是个人偏好的问题,但请记住,在启动过程中只会执行一次。
答案 1 :(得分:1)
主方法应该是静态的,因此不能从静态方法调用非静态方法。
将checkSomething更改为静态。
如果main方法不是静态的,那么我们需要创建实例来调用main方法。要再次创建即时,我们需要执行一些代码!这就是为什么我认为这个起点Main
使静态。