关于 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 { get; set; }//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 { get; set; } //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 }
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 { get; set; }//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 { get; set; } //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 }
欢迎访问 编程心手的博客 Happy..... |