在声明一个类时使用static关键字9159.com,它防止程

作者: 编程  发布:2019-11-05

一、静态类

局地东西你时刻在用,但未必就表示你确实通晓它,正如小编事先所明白的 static 。

logitechyan原文关于C#中static静态变量

选择 static 修饰符评释归属类型笔者却非归于特定目的的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用来索引器、析构函数或类以外的连串

  静态类与非静态类的入眼不一致在于静态类不能够实例化,也正是说,不能够利用 new 关键字成立静态类类型的变量。在宣称二个类时使用static关键字,具有多个地点的意思:首先,它幸免技术员写代码来实例化该静态类;其次,它防止在类的内部宣称任何实例字段或方式。

一、静态类

  C#静态变量使用static 修饰符进行宣示,在类被实例化时创设,通过类举行访谈不含有 static 修饰符注脚的变量称做非静态变量,在目的被实例化时创设,通过对象进行访谈二个类的保有实例的同后生可畏C#静态变量都以同四个值,同一个类的例外实例的平等非 静态变量能够是区别的值。静态函数的兑现里不可能运用非静态成员,如非静态变量、非静态函数等。 使用 static 修饰符证明归于类型小编并非归于特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函 数或类以外的类别

 

  1、静态类的珍视特点:

  静态类与非静态类的严重性差别在于静态类无法实例化,相当于说,无法动用 new 关键字创建静态类类型的变量。在宣称贰个类时使用static关键字,具备五个地点的意义:首先,它防止程序猿写代码来实例化该静态类;其次,它幸免在类的中间宣称任何实例字段或艺术。

  

静态全局变量

  [1] 仅包罗静态成员。

  1、静态类的根本特点:

静态全局变量

定义:在全局变量前,加上关键字 static 该变量就被定义成为了四个静态全局变量。

  [2] 无法实例化。

  [1] 仅满含静态成员。

在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。

特点:   A、该变量在全局数据区分配内部存储器。   B、开始化:即使不显式起首化,那么将被隐式开头化为0。

  [3] 静态类的原形,是二个虚幻的密闭类,所以无法被一连,也无法被实例化。

  [2] 无法实例化。

特点

 

  [4] 无法包蕴实例构造函数。

  [3] 静态类的本色,是三个华而不实的密闭类,所以不能够被三翻五次,也不可能被实例化。

该变量在全局数据区分配内部存款和储蓄器

静态局地变量

  [5] 要是四个类下边包车型地铁富有成员,都急需被分享,那么能够把那个类定义为静态类。

  [4] 不可能满含实例构造函数。

早先化:如若不显式开始化,那么将被隐式开端化为0。

定义:在局地变量前增加static关键字时,就定义了静态局地变量。

  2、静态类与私家构造函数差距:

  [5] 即便多个类上边包车型大巴装有成员,都亟待被分享,那么能够把那么些类定义为静态类。

 

特点:   A、该变量在大局数据区分配内部存款和储蓄器。   B、开始化:假诺不显式开始化,那么将被隐式开首化为0。   C、它始终驻留在全局数据区,直到程序运转甘休。但其效能域为一些功用域,当定义它的函数或 语句块结束时,其效用域随之截止。

  [1] 私有构造器形式还是能从类的里边对类进行实例化,而静态类幸免从任哪儿方实例化类,个中包含从类本身内部。

  2、静态类与私家构造函数差别:

静态局地变量

静态数据成员
特点:   A、内部存款和储蓄器分配:在程序的全局数据区分配。   B、伊始化和概念:     a、静态数据成员定义时要分配空间,所以无法在类注解中定义。     b、为了幸免在多个使用该类的源文件中,对其再一次定义,所在,不可能在类的头文件中     定义。     c、静态数据成员因为程序生龙活虎早先运营就必得存在,所以其开头化的特等地方在类的在那之中得以达成。   C、特点     a、对相于 public,protected,private 关键字的震慑它和平常数据成员大器晚成致,     b、因为其空间在全局数据区分配,归于持有本类的指标分享,所以,它不归于特定的类对象,在没发生类对象时其效用域就看得出,即在并未有爆发类的实例时,我们就能够操作它。
  D、访谈方式     a、 类对象名.静态数据成员名

  [2] 使用个人构造器的类中,是同意有实例成员的,编写翻译器不容许静态类有别的实例成员。

  [1] 私有构造器情势还能够从类的此中对类举办实例化,而静态类禁绝从此外地点实例化类,个中满含从类自个儿内部。

定义

        E、静态数据成员,首要用在类的享有实例都怀有的属性上。举个例子,对于一个积蓄类,帐号相对   于各类实例都以例外的,但各样实例的利息率是千篇风度翩翩律的。所以,应该把利息设为积储类的静态数据成员。那有多少个好处,第大器晚成,不管定义几个储蓄类对象,利息数据成员都分享分配在大局区的内部存款和储蓄器,所以节省存贮空间。第二,豆蔻梢头旦利息供给转移时,只要改革一回,则装有积蓄类对象的利息率全改成过来了,因为它们其实是公私三个东西。  

  [3] 使用静态类的优点在于,编写翻译器能够执行检查以保障不致不常地加上实例成员,编写翻译器将保证不会成立此 类的实例。

  [2] 使用民用构造器的类中,是允许有实例成员的,编译器不允许静态类有其它实例成员。

在局地变量前增加static关键字时,就定义了静态局地变量。

静态成员函数
特点:   A、静态成员函数与类相联系,不与类的靶子相挂钩。   B、静态成员函数不能够访谈非静态数据成员。原因超粗略,非静态数据成员归于特定的类实例。
作用:   首要用于对静态数据成员的操作。

  [4] C#编写翻译器会自动把它标识为sealed。那些首要字将类钦点为不可增添;换言之,不能够从它派生出其余类。

  [3] 使用静态类的优点在于,编写翻译器能够奉行检查以保障不致不常地加上实例成员,编译器将确定保障不会成立此 类的实例。

特点:   

调用方式:   A、类对象名.静态成员函数名(卡塔 尔(英语:State of Qatar)

二、静态成员

  [4] C#编写翻译器会自动把它标记为sealed。那么些第一字将类钦赐为不可扩充;换言之,无法从它派生出其余类。

该变量在全局数据区分配内部存储器。   

 

  1、通过static关键字修饰,是归属类,实例成员归属对象,在这些类第二遍加载的时候,那么些类上面包车型客车保有静态成员会被加载。

二、静态变量

开首化:假使不显式起首化,那么将被隐式最初化为0。

static静态变量的实例与解析

  2、静态成员只被创立一次,所以静态成员唯有生机勃勃份,实例成员有多少个对象,就有稍许份。

  1、通过static关键字修饰,是归于类,实例成员归于对象,在此个类第贰回加载的时候,这一个类下边包车型大巴兼具静态成员会被加载。

它平素驻留在全局数据区,直到程序运营截至。但其功效域为一些功用域,当定义它的函数或 语句块甘休时,其功能域随之甘休。

 实例

  3、类加载的时候,全体的静态成员就能被创制在“静态存款和储蓄区”里面,生机勃勃旦创制直到程序退出,才会被回笼。

  2、静态成员只被创制贰回,所以静态成员只有朝气蓬勃份,实例成员有些许个对象,就有多少份。

 

 

  4、成员须要被分享的时候,方法须要被每每调用的时候,就能够把这么些分子定义为静态成员。

  3、类加载的时候,全数的静态成员就能够被创建在“静态存款和储蓄区”里面,生机勃勃旦创建直到程序退出,才会被回笼。

静态数据成员
特点:   

C# 代码   复制

  5、在静态方法中,不可能平昔调用实例成员,因为静态方法被调用的时候,对象还应该有希望子虚乌有。

  4、变量须要被分享的时候,方法供给被频频调用的时候,就足以把那个成员定义为静态成员。

内部存储器分配:

 using System;

  6、this/base 关键字在静态方法中不能够运用,因为有超大可能率对象还不设有。

  5、在静态方法中,不可能直接调用实例成员,因为静态方法被调用的时候,对象还应该有希望空头支票。

在前后相继的大局数据区分配。   

9159.com 19159.com 2

  7、可以创设那么些类的对象,制定指标的分子在静态方法中操作。

  6、this/base 关键字在静态方法中不能够动用,因为有希望对象还荒诞不经。

伊始化和定义:    

namespace teststatic

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

  7、能够创设那些类的靶子,拟定指标的成员在静态方法中操作。

a、静态数据成员定义时要分配空间,所以不可能在类证明中定义。    

9159.com 3

  9、非静态类能够包括静态的章程、字段、属性或事件;

  8、在实例方法中,能够调用静态成员,因为当时静态成员肯定期存款在。

b、为了制止在多少个使用该类的源文件中,对其重新定义,所在,不能够在类的头文件中定义。    

{
    class class1
    {
        static int i = getNum();
        int j = getNum();

        static int num = 1;

        static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("i={0}",i);
            Console.WriteLine("j={0}", new class1().j);
            Console.Read();
        }
    }
}

  10、无论对一个类创设多少个实例,它的静态成员都独有三个别本;

  9、非静态类可以分包静态的章程、字段、属性或事件;
  10、无论对二个类成立多少个实例,它的静态成员都独有三个别本;
  11、静态方法和总体性没办法访谈其满含类型中的非静态字段和事件,况兼不能访谈任何对象的实例变量;
  12、静态方法只能被重载,而无法被重写,因为静态方法不归于类的实例成员;
  13、即使字段不可能宣称为 static const,但 const 字段的行事在精气神上是静态的。这样的字段属于类,不归于类的实例。

c、静态数据成员因为程序大器晚成伊始运转就必须存在,所以其初叶化的特等地方在类的内部落实。   

 

  11、静态方法和本性不能够访问其蕴藉类型中的非静态字段和事件,並且不能够访谈任何对象的实例成员;

三、静态方法

特点    

这两天深入分析下边包车型客车代码

  12、静态方法只好被重载,而无法被重写,因为静态方法不归于类的实例成员;

  1、静态方法是不归于特定对象的诀要;

a、对相于 public,protected,private 关键字的影响它和日常数据成员生机勃勃致,    

Console.WriteLine(string.Format("i={0}",i)); 这里i是static变量,并且类class1是率先次被引用,要先为class1里面装有的static变量分配内部存款和储蓄器。就算今后有超线程本事,可是指令在逻辑依然一条一条的按梯次实践的,所以 先为static int i分配内部存款和储蓄器,并且在该内部存款和储蓄器中保持int的缺省值0,接着再为static int num 变量分配内部存款和储蓄器,值当然也为0。

  13、就算字段无法声称为 static const,但 const 字段的一坐一起在真相上是静态的。那样的字段归属类,不归于类的实例。

  2、静态方法能够访谈静态成员变量;

b、因为其空间在大局数据区分配,归属持有本类的指标共享,所以,它不归属特定的类对象,在没产生类对象时其效用域就可以知道,即在未有生出类的实例时,我们就可以操作它。

下一场实施第二步,为变量赋值:先为static int i变量赋值,i=getNum(卡塔 尔(英语:State of Qatar),看getNum里面的代码,正是return num,这时num的值是0,于是i就为0了。然后对变量num赋值,num=1;那行代码试行后,num就为1了。

三、静态方法

  3、静态方法不得以一直访谈实例变量,能够在实例函数调用的气象下,实例变量做为参数字传送给静态方法;

访谈情势    

故此最后的结果为:

  1、静态方法是不归属特定目的的不二等秘书技;

  4、静态方法也不能够直接调用实例方法,能够直接调用,首先要开创八个类的实例,然后通过那大器晚成特定指标来调用静态方法。

 类对象名.静态数据成员名

 i=0 j=1

  2、静态方法能够访问静态成员;

四、静态构造函数

 

  3、静态方法不得以一直访谈实例成员,能够在实例函数调用的情状下,实例成员做为参数字传送给静态方法;

  1、静态类能够有静态构造函数,静态构造函数不可一连;
  2、静态构造函数能够用来静态类,也可用于非静态类;
  3、静态构造函数无访问修饰符、无参数,独有叁个 static 标识;
  4、静态构造函数不可被直接调用,当创制类实例或援用任张珈铭态成员在此之前,静态构造函数被电动实施,並且只进行一次。

静态数据成员,主要用在类的具有实例都富有的品质上。比方,对于叁个储蓄类,帐号绝对于各类实例都以分化的,但种种实例的利息是生龙活虎致的。所以, 应该把利息设为积贮类的静态数据成员。那有多少个好处,第意气风发,不管定义多少个储蓄类对象,利息数据成员都共享分配在大局区的内部存款和储蓄器,所以节省存贮空间。第二, 风流倜傥旦利息须要改造时,只要改变叁遍,则怀有储蓄类对象的利息率全改成过来了,因为它们其实是共用二个事物。

  4、静态方法也不可能直接调用实例方法,能够直接调用,首先要开创二个类的实例,然后经过那豆蔻梢头特定对象来调用静态方法。

  例如: 

  

四、静态构造函数

class Program

 {

         public static int i =0;

         public Program()

         {

             i = 1;

             Console.Write("实例构造方法被调用");

         }

         static Program()

         {

             i = 2;

             Console.Write("静态构造函数被执行");

         }

         static void Main(string[] args)

         {

             Console.Write(Program.i);//结果为2,首先,类被加载,所有的静态成员被创建在静态存储区,i=0,接着调用了类的成员,这时候静态构造函数就会被调用,i=2

             Program p = new Program();

             Console.Write(Program.i);//结果为1,实力化后,调用了实例构造函数,i=1,因为静态构造函数只执行一次,所以不会再执行。

         }

 }

静态成员函数
特点:   

  1、静态类能够有静态构造函数,静态构造函数不可一而再接二连三;
  2、静态构造函数能够用来静态类,也可用来非静态类;
  3、静态构造函数无访谈修饰符、无参数,唯有一个 static 标记;
  4、静态构造函数不可被直接调用,当创造类实例或援用任黄澜态成员以前,静态构造函数被活动实践,况兼只实行一遍。

五、静态变量的存款和储蓄

静态成员函数与类相挂钩,不与类的指标相调换。   

  例如:

  使用 static 修饰符评释归属类型作者并不是归属特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不可能用于索引器、析构函数或类以外的品种。

静态成员函数不可能访谈非静态数据成员。原因相当粗略,非静态数据成员归属特定的类实例。
作用:   

9159.com 4

静态全局变量

主要用以对静态数据成员的操作。

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

定义:在全局变量前,加上关键字 static 该变量就被定义成为了三个静态全局变量。

调用格局:  

9159.com 5

特点

类对象名.静态成员函数名(卡塔尔

 

A、该变量在大局数据区分配内部存款和储蓄器。   

  

五、静态成员的囤积

  使用 static 修饰符注明归属类型我并不是属于特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不可能用于索引器、析构函数或类以外的品种。

  静态全局变量

  定义:在全局变量前,加上关键字 static 该变量就被定义成为了二个静态全局变量。

  特点:A、该变量在全局数据区分配内部存款和储蓄器。   B、开首化:如若不显式初阶化,那么将被隐式开端化为0。

 

  静态局地变量

  定义:在局部变量前增进static关键字时,就定义了静态局地变量。

  特点:A、该变量在全局数据区分配内部存款和储蓄器。   B、初阶化:假若不显式最先化,那么将被隐式伊始化为0。   C、它始终驻留在全局数据区,直到程序运营甘休。但其效用域为部分成效域,当定义它的函数或 语句块停止时,其成效域随之结束。

 

  静态数据成员
  特点

  A、内部存款和储蓄器分配:在前后相继的大局数据区分配。   

  B、先导化和概念:     a、静态数据成员定义时要分配空间,所以不可能在类证明中定义。     b、为了防止在多少个使用该类的源文件中,对其重新定义,所在,不可能在类的头文件中定义。     c、静态数据成员因为程序大器晚成在这从前运维就必得存在,所以其开首化的一流地方在类的里边得以完成。   

  C、特点     a、对相于 public,protected,private 关键字的震慑它和日常数据成员平等,     b、因为其空间在大局数据区分配,归属全数本类的对象分享,所以,它不归属特定的类对象,在没产生类对象时其效率域就可知,即在还未有产生类的实例时,大家就能够操作它。
  D、访问格局     a、 类对象名.静态数据成员名

        E、静态数据成员,重要用在类的具备实例都具有的习性上。举例,对于二个积储类,帐号相对于种种实例都以不一致的,但每一个实例的利息是一模一样的。所以,应该把利息设为积贮类的静态数据成员。那有五个实惠,第生龙活虎,不管定义多少个积蓄类对象,利息数据成员都分享分配在全局区的内部存款和储蓄器,所以节省存贮空间。第二,生龙活虎旦利息须要改换时,只要改动贰次,则装有储蓄类对象的利息全改成过来了,因为它们其实是公家二个东西。  

  静态成员函数
  特点:   A、静态成员函数与类相联系,不与类的指标相关联。   B、静态成员函数不能够访谈非静态数据成员。原因很简短,非静态数据成员归于特定的类实例。
  作用:   主要用以对静态数据成员的操作。

  调用方式:   A、类对象名.静态成员函数名(卡塔 尔(阿拉伯语:قطر‎

 

  static静态变量的实例与解析,代码如下

9159.com 6

class Program
    {
        static int i = getNum();
        int j = getNum();

        static int num = 1;

        static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("i={0}", i);
            Console.WriteLine("j={0}", new Program().j);
            Console.Read();
        }

    }

9159.com 7

 

  剖析上面的代码

  Console.WriteLine("i={0}", i);

  这里 i 是 static 变量,在类 Program  首先次被加载时,要先为 Program  内部有着的 static 变量分配内部存款和储蓄器。固然昨日有超线程技艺,可是指令在逻辑上或然各类的按梯次自上而下施行,所以 先为 static int i 分配内部存款和储蓄器,而且在该内部存款和储蓄器中保持int的缺省值0,接着再为 static int num 变量分配内部存款和储蓄器,值当然也为0。

  然后第二步,为变量赋值:先为 static int i 变量赋值,i=getNum(),看 getNum() 里面包车型客车代码,就是return num,那个时候 num 的值是 0 ,于是 i=0 。然后对变量num赋值,num=1;这行代码试行后,num就为1了。所以,j=1。

  所以最终的结果为:

   i=0 j=1

  注意:

  当类第一回被加载时,会对类中的静态变量先按顺序实行分红内部存储器空间,当整个分配完内部存款和储蓄器空间之后,在对静态变量按梯次赋值。

 

  首先分为两部分 寄放器和内部存款和储蓄器(包蕴缓存卡塔 尔(阿拉伯语:قطر‎

  内部存储器分为两部分 代码和数目

  数据分为两部分 静态存款和储蓄区和平运动作时存储

  运转时存款和储蓄分为 旅馆 和 堆
  静态存储分为 全局静态存款和储蓄 和 常量

B、伊始化:要是不显式开头化,那么将被隐式早先化为0。

static静态变量的实例与解析

 

 实例

静态局地变量

using System;

namespace teststatic

{
    class class1
    {
        static int i = getNum();
        int j = getNum();

        static int num = 1;

        static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            Console.WriteLine("i={0}",i);
            Console.WriteLine("j={0}", new class1().j);
            Console.Read();
        }
    }
}

定义:在一些变量前增加static关键字时,就定义了静态局地变量。

 

特点:   

当今深入分析上面的代码

A、该变量在全局数据区分配内部存款和储蓄器。   

Console.WriteLine(string.Format("i={0}",i)); 这里i是static变量,何况类class1是首先次被援引,要先为class1里面有着的static变量分配内部存款和储蓄器。纵然今日有超线程本事,但是指令在逻辑照旧一条一条的按顺序实行的,所以 先为static int i分配内部存款和储蓄器,而且在该内部存储器中保持int的缺省值0,接着再为static int num 变量分配内部存款和储蓄器,值当然也为0。

B、初叶化:如若不显式开首化,那么将被隐式初始化为0。   

接下来实践第二步,为变量赋值:先为static int i变量赋值,i=getNum(卡塔尔,看getNum里面包车型地铁代码,正是return num,当时num的值是0,于是i就为0了。然后对变量num赋值,num=1;这行代码施行后,num就为1了。

C、它始终驻留在全局数据区,直到程序运维甘休。但其功能域为部分作用域,当定义它的函数或 语句块结束时,其功用域随之截至。

于是最后的结果为:

静态数据成员
特点:   

 i=0 j=1

A、内部存款和储蓄器分配:在前后相继的大局数据区分配。   

 

B、最初化和定义:    

a、静态数据成员定义时要分配空间,所以不可能在类注解中定义。    

b、为了防止在七个应用该类的源文件中,对其再一次定义,所在,不可能在类的头文件中定义。    

c、静态数据成员因为程序生机勃勃开始运行就必得存在,所以其最早化的一级地点在类的内部贯彻。   

9159.com,C、特点    

a、对相于 public,protected,private 关键字的震慑它和普通数据成员平等,    

b、因为其空间在全局数据区分配,归属全部本类的指标分享,所以,它不归属特定的类对象,在没产生类对象时其功用域就看得出,即在未曾发生类的实例时,我们就足以操作它。
D、访问方式    

a、 类对象名.静态数据成员名

E、静态数据成员,主要用在类的具有实例都独具的天性上。比如,对于叁个积蓄类,帐号相对   于每一个实例都以莫衷一是的,但各样实例的利息率是生机勃勃致的。所以,应该把利息设为积储类的静态数据成员。那有五个好处,第风流倜傥,不管定义多少个积储类对象,利息数据成员都分享分配在大局区的内存,所以节省存贮空间。第二,风姿罗曼蒂克旦利息须求更动时,只要改动一次,则兼具储蓄类对象的利息率全改成过来了,因为它们其实是共用二个事物。  

静态成员函数
特点:   

A、静态成员函数与类相挂钩,不与类的目的相联系。   

B、静态成员函数不可能访谈非静态数据成员。原因超级轻易,非静态数据成员归于特定的类实例。
作用:   首要用来对静态数据成员的操作。

调用情势:   

A、类对象名.静态成员函数名(卡塔 尔(英语:State of Qatar)

 

static静态变量的实例与解析

 实例: 

using System;

namespace teststatic

{

    class class1

    {

        static int i = getNum();

        int j = getNum();



        static int num = 1;



        static int getNum()

        {

            return num;

        }



        static void Main(string[] args)

        {

            Console.WriteLine("i={0}",i);

            Console.WriteLine("j={0}", new class1().j);

            Console.Read();

        }

    }

}

这段日子分析上边的代码

Console.WriteLine(string.Format("i={0}",i)); 这里i是static变量,况且类class1是首先次被援引,要先为class1里面装有的static变量分配内部存款和储蓄器。即使现近年来有超线程手艺,但是指令在逻辑仍旧一条一条的按顺序实践的,所以 先为static int i分配内部存款和储蓄器,何况在该内部存款和储蓄器中保持int的缺省值0,接着再为static int num 变量分配内部存款和储蓄器,值当然也为0。

接下来执行第二步,为变量赋值:先为static int i变量赋值,i=getNum(卡塔 尔(英语:State of Qatar),看getNum里面包车型客车代码,正是return num,那个时候num的值是0,于是i就为0了。然后对变量num赋值,num=1;这行代码奉行后,num就为1了。

进而最终的结果为:

 i=0 j=1

 

  首先分为两有的 贮存器和内部存款和储蓄器(富含缓存卡塔尔

  内部存款和储蓄器分为两有的 代码和数码

  数据分为两有的 静态存款和储蓄区和周转时存款和储蓄

  运维时存款和储蓄分为 货仓 和 堆
  静态存款和储蓄分为 全局静态存款和储蓄 和 常量

 

本文由9159.com发布于编程,转载请注明出处:在声明一个类时使用static关键字9159.com,它防止程

关键词:

上一篇:没有了
下一篇:没有了