本篇体验静态变量、静态构造函数和静态类。
静态变量
静态变量位于栈上,它是一个全局变量,在编译期就已经生成。
public class Cow{public static int count;PRivate int id;public Cow(){id = ++count;}}
客户端创建2个Cow的实例,并打印静态变量count。
static void Main(string[] args){Console.WriteLine(Cow.count);Cow cow1 = new Cow();Cow cow2 = new Cow();Console.WriteLine(Cow.count);}
结果:02
○ 在创建Cow实例之前,全局就已经有了count这个静态变量○ 如果在static之前用private修饰,就不可以通过"类名.静态字段名"来访问静态字段,但全局的静态字段始终存在
在堆和栈上的表现,如下图:
静态构造函数
在Cow类中添加一个静态构造函数。
public class Cow{public static int count;private int id;public Cow(){id = ++count;}static Cow(){count = new Random().Next(100);}}
在构造函数和静态构造函数中,都对Cow的静态字段赋值。现在我们想了解静态构造函数在什么时候触发。是在用构造函数创建实例的时候触发吗?会不会在设置Cow的字段或属性值的时候触发?在客户端,通过打印静态字段count的值来了解静态构造函数什么时候被触发。
static void Main(string[] args)
新闻热点
疑难解答