代码之家  ›  专栏  ›  技术社区  ›  Tony The Lion

为什么大多数C程序的主要方法入口点是静态的?

  •  37
  • Tony The Lion  · 技术社区  · 14 年前

    为什么大多数C程序的主要方法入口点是静态的?

    8 回复  |  直到 13 年前
        1
  •  60
  •   JaredPar    14 年前

    要调用实例方法,需要对象的实例。这意味着为了启动程序,clr需要创建say的实例 Program 为了调用方法 Main . 因此, 程序 会在之前运行 主要的 这完全破坏了拥有一个主管道的目的。

        2
  •  16
  •   Eric Lippert    14 年前

    我会把问题转过来。实现允许main作为实例方法的特性有什么令人信服的好处?功能是昂贵的;如果没有令人信服的好处,它们就无法实现。

    您是否有一个很好的理由,为什么应该允许main成为一个实例方法?

        3
  •  4
  •   rerun    14 年前

    概念上,您只有一个静态实例。静态方法很好地映射到程序的单个起始点的习惯用法。语言设计者可以创建一个特殊的程序类来与主方法一起使用,但是选择创建一个静态函数作为入口点。在某些层面上,它实际上只是一种设计选择。

        4
  •  1
  •   David Morton    14 年前

    因为否则它必须创建一个对象,并且运行构造函数可能会导致负面的副作用。

        5
  •  1
  •   Vlad    14 年前

    否则,如何在main之前创建类实例?

        6
  •  0
  •   Asad    14 年前

    这个 .NET runtime 调用 Main 方法。(注意:也可以从其他地方调用main,例如从另一个exampleClass方法中的代码main())调用。) static 关键字使该方法在没有 instance 属于 ExampleClass . 所以主方法是一个入口点,必须声明为静态的。

    否则,程序将需要 一个实例,但任何实例 需要程序。

    为了避免不可解决的问题 circular dependency 主要用作入口点


    参考文献: http://en.wikipedia.org/wiki/C_Sharp_(programming_language

        7
  •  0
  •   fastcodejava    14 年前

    静态方法可以在不创建实例的情况下执行。按照惯例,他们有 main 方法作为要调用的默认方法。

        8
  •  -3
  •   mukesh    13 年前

    因为一个类中的每个对象都包含主方法和其他方法和变量,所以每个变量和所有对象包含的方法都有单独的副本,但是主类副本只是它们之间的一个副本,所以为了在多个对象之间创建副本,我们必须将主方法设置为静态。

    推荐文章