static 静态类 方法 变量

当类第一次被加载时,会对类中的静态变量先按顺序进行分配内存空间,当全部分配完内存空间之后,再对静态变量按顺序赋值。

    int x = y;
    int y = 5;

程序会报错,因为x找不到y的值(y在栈中的值)

    int x = y;
    static int y = 5;
    static void Main()
    {
        Console.WriteLine(x);
        Console.WriteLine(y);
    }
    /*
Output:
    5
    5
*/

此时,先为static的y分配内存空间,然后赋值y为5,然后才对非static的x分配内存并赋值y的5,所以x是5,y是5

需要注意的,是下面这段代码

class Test
{
    static int x = y;
    static int y = 5;

    static void Main()
    {
        Console.WriteLine(Test.x);
        Console.WriteLine(Test.y);

        Test.x = 99;
        Console.WriteLine(Test.x);
    }
}
/*
Output:
    0
    5
    99
*/

先找到尚未声明的y,但是x是static,所以x使用默认值0

这里 x 是 static 变量,在类 Program 第一次被加载时,要先为 Program 里面所有的 static 变量分配内存。尽管现在有超线程技术,但是指令在逻辑上还是逐条的按顺序自上而下执行,所以 先为 static int x 分配内存,并且在该内存中保持int的缺省值0,接着再为 static int y 变量分配内存,值当然也为0。

然后第二步,为变量赋值:先为 static int x 变量赋值,x=y这个时候 y 的值是 0 ,于是 x=0 然后对变量y赋值,y=1;这行代码执行后,y就为1了。所以,y=1。

所以最后的结果为:

x=0 y=1

C# static的用法详解----遥远的Ta

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值