Static静态变量、静态函数
1 namespace MakeoutStatic 2 { 3 class Counter { 4 public static int num; 5 public void clear() 6 { 7 num = 0; 8 } 9 public void count () 10 { 11 num ++ ; 12 } 13 } 14 15 class Program { 16 public static void Main(string[] args) 17 { 18 Counter mycounter = new Counter(); 19 Counter yourcounter = new Counter(); 20 mycounter.clear(); 21 int i; 22 for(i=0;i<10;i++) 23 mycounter.count(); 24 Console.Write(Counter.num); 25 yourcounter.clear(); 26 Console.Write(Counter.num); 27 Console.ReadKey(); 28 } 29 30 } 31 }
如上代码,
在定义类中的一个成员变量时,如果用了static 关键字。那么这个类就只会 有这一个变量,称它是静态变量,它是属于这个类的,是类的专有的静态变量,不属于类的实例化对象的。那么,属于这个类的静态变量,与该类之下对象的关系是什么呢?很容易想到,作为类专有的静态变量,应该是被类的所有对象的方法所共用的。这个静态变量是唯一的,每个实例对象都可以对它进行操作。
对Main函数中主要代码的解释:新建两个实例化Counter对象。一个对象的clear方法将类的专有静态变量num清零即设为0,然后这个对象的count方法运行10次,也就是,将num增加10次。显示num的值。注意,num不是mycounter.num而是Counter.num,因为它是专有于类的,并不存在于对象中,对象只能对它进行操作。之后,用另一个对象的clear方法将num清零。显示num的值。
这段代码充分显示了类的静态变量专有于类公用于对象的特性。
同样,在类定义时,对一个函数使用了static关键字,那么它也是属于类专有的函数,它所使用的变量必须是静态变量即类的专有变量。所以,静态函数和静态变量都是在类的专属层面上运行。