C# static

using System;

namespace ConsoleApplication5
{
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(),看getNum里面的代码,
/// 就是return num,这个时候num的值是0,于是i就为0了。然后对变量num赋值,num=1;这行代码执行后,num就为1了。
/// 所以最后的结果为:
/// i=0 j=1

posted @ 2018-01-05 14:13  Hello_2018  阅读(213)  评论(0编辑  收藏  举报