zoukankan      html  css  js  c++  java
  • 理解C#中的“静态”

    一、静态成员

    1、通过static关键字修饰,是属于类,实例成员属于对象,在这个类第一次加载的时候,这个类下面的所有静态成员会被加载。

    2、静态成员只被创建一次,所以静态成员只有一份,实例成员有多少个对象,就有多少份。

    3、类加载的时候,所有的静态成员就会被创建在“静态存储区”里面,一旦创建直到程序退出,才会被回收。

    注:Person p;//这样实际上就已经被加载了。

    4、变量需要被共享的时候,方法需要被反复调用的时候,就可以把这些成员定义为静态成员。

    5、在静态方法中,不能直接调用实例成员,因为静态方法被调用的时候,对象还有可能不存在。

    6、this/base 关键字在静态方法中不能使用,因为有可能对象还不存在。

    7、可以创建这个类的对象,制定对象的成员在静态方法中操作。

    8、在实例方法中,可以调用静态成员,因为这个时候静态成员肯定存在。

    二、静态成员和实例成员的区别

    1、生命周期不一样。

    2、在内存中存储的位置不一样。

    三、静态类

    1、被static关键字修饰的类。

    2、静态类里面只能声明静态成员。

    3、静态类的本质,是一个抽象的密封类,所以不能被继承,也不能被实例化。

    4、如果一个类下面的所有成员,都需要被共享,那么可以把这个类定义为静态类。

    四、静态构造函数

    1、这个类的成员,第一次被访问之前,就会执行静态构造函数。

    2、静态构造函数只被执行一次。

    Eg:

     1 class Program
     2     {
     3         public static int i =0;
     4         public Program()
     5         {
     6             i = 1;
     7             Console.Write("实例构造方法被调用");
     8         }
     9         static Program()
    10         {
    11             i = 2;
    12             Console.Write("静态构造函数被执行");
    13         }
    14         static void Main(string[] args)
    15         {
    16             Console.Write(Program.i);//结果为2,首先,类被加载,所有的静态成员被创建在静态存储区,i=0,接着调用了类的成员,这时候静态构造函数就会被调用,i=2
    17             Program p = new Program();
    18             Console.Write(Program.i);//结果为1,实力化后,调用了实例构造函数,i=1,因为静态构造函数只执行一次,所以不会再执行。
    19         }
    20     }

    注:以上文章均属软谋原创,如需转载,请注明出处!

  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/ruanmou001/p/3347109.html
Copyright © 2011-2022 走看看