C# - 从静态main调用函数

时间:2013-06-01 18:41:49

标签: c# static main function-calls

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

我在program.cs中编写了一个函数(public checkSomething,获取2个字符串) 当我试图从静态main调用此函数时 我收到了这个错误:

  

“非静态字段,方法或方法需要对象引用   property'checkSomething(string,string)'“。

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

谢谢!

2 个答案:

答案 0 :(得分:2)

这里的问题不是关于静态函数,而是main应用程序中C#静态的原因。

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

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

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

当您将项目切换的build options的主要静态引用从startup function移除到startup object时,会在main之前创建该类的实例被称为。

这是个人偏好的问题,但请记住,在启动过程中只会执行一次。

答案 1 :(得分:1)

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

将checkSomething更改为静态。

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