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关键字,那么它也是属于类专有的函数,它所使用的变量必须是静态变量即类的专有变量。所以,静态函数和静态变量都是在类的专属层面上运行。
posted @ 2017-11-07 09:26  入门初学小霸王  阅读(996)  评论(0编辑  收藏  举报