C#程序入口的static Main方法为什么要加上Static

c#程序刚开始启动的时候都会有唯一一个入口函数main()函数,而非静态成员又称实例成员,必须作用于实例。在程序刚开始运行的时候,未建立任何实例,因此无法调用实例成员,包括非静态的Main方法。为了能够在程序的开始执行Main方法,必须将其声明为静态。

顺便说明,在Main方法中调用的成员也必须是静态的,除非建立过相应的实例。
例如:

namespace lover_P.Test 
{
   public class Test
   {
      public void InstanceMethod() {} // 实例成员(非静态)  
      public static void StaticMethod {} // 类型成员(静态)
      public static void Main() 
      {
        InstanceMethod(); // 错误!调用了实例成员,而此时并没有建立实例
        StaticMethod(); // 正确!可以调用静态成员
        Test SomeTest = new Test(); // 建立本类型的一个实例
        SomeTest.InstanceMethod(); // 再在这个实例上调用实例成员就对了
        SomeTest.StaticMethod(); // 附加一句,在实例上调用静态成员也是错误的!
      }
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,373评论 0 27
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 10,437评论 0 14
  • 前言 由于在开发过程中常常需要用到系统提供的基础类型之外的的类型,所以Swift允许我们根据自己的需要构建属于自己...
    silly鸿阅读 4,954评论 0 0