你能在自己的入口点内实例化一个类吗?

时间:2010-09-02 18:08:58

标签: c#

请考虑以下代码:

class Program 
{

    static void Main(string[] args)
    {
        new Program().Run(args);
    }

    void Run(string[] args)
    {
        ...
    }

    ...
}

现在这正如我所期望的那样,当然我看不出任何明显的错误,但本能地这段代码让我担心。所以我有三个问题:

  • 编译器是否很好地定义了这种行为?
  • 这段代码是否符合我的预期?
  • 此代码是否符合最佳做法?

2 个答案:

答案 0 :(得分:3)

是的,这是有效的代码并按照您的预期执行。

Main只是一种静态方法。事实上它是入口点,只是意味着CLR在启动时调用它。在静态方法中实例化一个类并在其上调用方法是完全有效的。

答案 1 :(得分:1)

是的,是的,是的。我不明白为什么它会给任何人带来麻烦。

Main()这样的入口点与构造函数不同,加上它是静态的。运行时,类已完全定义,所有静态成员都可用,并且可以毫无问题地创建实例。