zoukankan      html  css  js  c++  java
  • 静态类和非静态类以及静态方法和非静态方法的区别

    1、静态类中不能包括非静态成员,比如非静态方法、构造函数;非静态类中可以包括静态成员。如果不按照这种规则静态类编译器会检查报错。

    简而言之就是:静态类中所有的成员必须是静态成员,但是静态成员不一定是在静态类中 。

    2、静态类无法实例化,其成员可以直接使用;非静态类中的静态成员不需要实例化,可以直接使用,非静态类中的非静态成员必须实例化。

    简而言之就是:不管在哪静态成员都不需要实例化其所在类,而非静态成员必须实例化其所在类。

    3、静态成员之所以执行速度快,是因为其在编译的时候编译器放在了静态区(保存自动全局变量和 static 变量)静态区的内容在总个程序的生命周期内都存在,而普通类的中的非静态成员需要实例化,值类型在栈中分配空间,引用类型在栈中存引用地址,堆中存实例对象,从而获取方法,所以速度慢。

    静态成员变量在程序启动的时候,就全部装入内存的静态区中,而不管这些方法、属性以后有没有用到
    。即使是没有人再访问程序,这部分内存仍然不会释放。

    4、静态成员等同于全局变量,整个系统中存在统一块区域(静态区)中,是共享的,比如static into num=0;编译的时候num就已经是0了,A线程改了其值为1,B线程获取的时候num就是1了。

    5、静态方法和属性不能访问其包含类中的非静态字段和事件。静态方法不能直接访问其所在类的其它非静态方法,需要通过实例化的对象引用。非静态方法既可以访问非静态成员,也能访问静态成员。

    6、静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员。

    7、C# 不支持静态局部变量(在方法内部定义静态变量)。

    8、静态类是密封类(sealed),无法被继承。其密封是有自我保护的作用,并且符合编程三大思想之封装思想,string也是密封类

    9、静态类只能继承object类,不能继承其它类。

    10、继承(多态)与静态本身就是相反的,静态类的本质:abstract+sealed。

    静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。
      

    class SimpleClass
    {
        // Static constructor
        static SimpleClass()
        {
            //
        }
    }


      在使用静态构造函数的时候应该注意几点:

      1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
      
      2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

      3、一个类只能有一个静态构造函数。

      4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

      5、最多只运行一次。

      6、静态构造函数不可以被继承。

      7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

  • 相关阅读:
    BZOJ_3171_[Tjoi2013]循环格_最小费用最大流
    BZOJ_1150_[CTSC2007]数据备份Backup_堆+贪心
    BZOJ_1576_[Usaco2009 Jan]安全路经Travel&&BZOJ_3694_最短路_树链剖分+线段树
    BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数
    BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho
    BZOJ_1584_[Usaco2009 Mar]Cleaning Up 打扫卫生_DP
    BZOJ_1229_[USACO2008 Nov]toy 玩具_三分+贪心
    BZOJ_2160_拉拉队排练_manacher
    [转载]Linux软件包及dpkgapt等方法
    服务器基础认知杂谈及一小点运维相关
  • 原文地址:https://www.cnblogs.com/zhangchengye/p/5140044.html
Copyright © 2011-2022 走看看