关于 Using Static Function 的总结 By greenhand

 1 namespace Using_Static_Function
 2 {
 3     class Program
 4     {
 5        /// <summary>
 6        /// 总结静态的方法调用的时候应该注意的问题;  静态的方法只能调用静态的成员变量或成员方法 
 7        /// </summary>
 8        /// <param name="args"></param>
 9         static void Main(string[] args)
10         {
11             Student.ShowName_1();//调用静态方法的方式 按原理来说应该是直接写静态方法名就可以的,但是因为这个静态的方法不是写在本类里面所以要用 类名来访问;  
12             
13             //静态的方法调用非静态的方法另一种方式;
14 
15             Student stu = new Student();  //通过实例化对象的方式引用一个类对象的域;
16             stu.ShowName_2();
17         }
18     }
19 
20     /// <summary>
21     /// 总结:为什么静态的方法只能调用静态的方法 而不能调用非静态的方法?
22     /// 因为:类中的非静态成员,在每个类的实例中都会占有一定的存储空间,
23     /// 多个类也就有多个这样的同名的非静态成员的内存地址存在【地址不冲突 是因为 有个类似于应用程序域一样的概念将各个对象的区域隔开了,跟应用程序域很像,这里不研究】,
24     /// 程序也不知道到那个对象域里面去读取这个值(编译器也不是智能的也是按某种约定去检测执行代码),因为静态的东东是全局共享的,所以它的域就是整个应用程序,所以静态方法里面就可以访问静态的内容,它们在一个应用程序域里面,
25     /// 应用程序的进程关了静态的东东才会释放掉;
26     /// </summary>
27     public class Student   
28     {
29         public static  string Name { getset; }//Static Property
30 
31         public static string ShowName_1()  //Static Function
32         {
33             return Student.Name;
34             //return this.Name;//这种写法是错误的,this在静态的方法里面充当的并不是当前类对象的角色,而是应用程序级的;
35            
36         }
37 
38         public int Age { getset; }  //UnStatic Property
39 
40         public string ShowName_2()  //UnStatic Function
41         {
42             return ShowName_1();//【非静态的方法能够访问类中的任何成员,包括静态的成员属性或方法;】
43             
44         }
45 
46         public Student()
47         {
48 
49         }
50 
51     }
52 }
posted @ 2011-08-30 11:47  蒙爷爷  阅读(393)  评论(0编辑  收藏  举报