2010-09-02 60 views
2

考虑下面的代码:你可以在自己的入口点实例化一个类吗?

class Program 
{ 

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

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

    ... 
} 

现在这个工程,我期望它,当然我也看不出什么明显的错误,但本能的代码让我担心。所以我有三个问题:

  • 此行为是否由编译器定义好?
  • 这段代码是否符合我的期望?
  • 此代码是否符合最佳实践?
+0

你在做什么绝对没有错。静态方法始终创建周围类的实例(例如,请参阅单例模式)。 – 2010-09-02 18:14:16

回答

3

是的,这是有效的代码,并做你期望它做的。

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

+0

是的,它只是另一种方法。它的唯一特别之处在于它在启动时被调用一次。在稍后再次调用该方法时,不会对其他静态方法做任何不同的处理,所以不用担心。 – JonWillis 2010-09-02 18:19:11

1

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

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

相关问题