C#系列之:类中的静态变量的执行数序

  今天对静态变量的销毁作了下研究,看到网上大家各有各的说法,但最终的一致结果是:静态变量是伴随程序的消亡而销毁,就像全局变量一样,随后看到了有人在执行存在静态

变量的类中的一些计算,如下:

Bus类:

   public class Bus
    {
        public static int datay = Trunk.data + 1;
        static Bus()
        {
            Console.WriteLine("calling Bus");
            Console.Write(datay);
        }
    }

Trunk类:

    public class Trunk
    {
        public static int data = 0;
        static Trunk()
        {
            Console.WriteLine("calling Trunk");
            Console.WriteLine(data);
            data = Bus.datay + 1;
        }
    }

Main函数:

static void Main(string[] args)

{

            Console.WriteLine("Data:{0},Datay:{1}", Bus.datay, Trunk.data);
            Console.ReadLine()

}

运行结果:


最终总结出:每个类都有自己的静态构造函数,而且无论是实例化类多少次,都只会执行1次给静态变量的赋值,而且


每次执行时候,先过静态变量的定义,如图:


然后再进入静态构造函数进行赋值;但是,碰到如上图断点处,发现调用到Trunk类的data变量,就会首先跳转到Trunk类的该静态变量的定义处,


,进行初始化定义,再到静态函数的赋值,执行完毕后,跳转回首次执行的位置,对该位置的变量进行初始化赋值;并且,经过此次静态构造函数的


赋值后,其它的赋值都不会对其产生影响,改变其值;


希望以上讲述能帮助到大家,可以继续讨论研究,提出质疑!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!




路漫漫其修远兮吾将上下而求索的意思,程序员,一定要多思考,多研究,亲身去验证一些问题,会更扎实!作软件是一件很值得思考的事情!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值