当前位置:首页 > Windows程序 > 正文

这个时候 num 的值是 0

2024-03-31 Windows程序

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(); } }
//输出值为
i=0
j=1

分析上面的代码

  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

  注意:

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

  首先分为两部分 寄存器和内存(包孕缓存)

  内存分为两部分 代码和数据

  数据分为两部分 静态存储区和运行时存储

  运行时存储分为 仓库 和 堆
  静态存储分为 全局静态存储 和 常量

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/35508.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494590访问次数
  • 建站天数
  • 友情链接