1

我的问题可能很基本,但我没有找到答案......

当我尝试从静态 main 调用此函数时,我在 program.cs 中编写了一个函数(获取 2 个字符串的公共 checkSomething),但出现此错误:

“非静态字段、方法或属性‘checkSomething(string,string)’需要对象引用”。

但是,当我将 main 更改为 Public(而不是静态)时 - 没有错误。为什么会这样?有什么更好的 - 是否有一个静态主?为什么它甚至会重要?

谢谢!

4

2 回答 2

2

这里的问题不是关于静态函数,而是具体为什么main在应用程序中是静态的C#

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

然后静态主函数可以实例化正常操作所需的任何类。这些通常是表格或工人阶级之类的东西。

程序要么进入主线程中的消息循环以处理可见表单,要么程序终止。

当您删除 main 的静态引用时,build options项目从 a 切换startup function到 a ,并在调用startup object之前创建类的实例。main

这是个人喜好的问题,但请记住,在启动期间只执行了 1 个 main。

于 2013-06-01T18:59:11.530 回答
1

主要方法应该是静态的,因此您不能从静态方法调用非静态方法。

将 checkSomething 更改为静态。

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

于 2013-06-01T18:49:20.577 回答