1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace _16静态成员静态类 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 13 14 //MyClass mc = new MyClass(); 15 //mc.M1(); 16 17 ////1>调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用, 18 ////也就是说使用静态成员不需要实例化对象。 19 ////2>静态成员会在整个应用程序退出时,才释放资源,所以可以在整个应用程序中共享数据。 20 //3>静态类不能被实例化,不能被继承。 21 22 //4>由于静态成员会在整个程序退出时,才释放资源,所以尽量避免写静态字段或静态属性,最好只写静态方法。 23 24 //5>当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数【静态构造函数不能有访问修饰符、并且也不能带参数】 25 26 //6>//静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。 27 //静态构造函数不能有访问修饰符,不能有参数。 28 29 30 //MyClass.M2(); 31 //Console.ReadKey(); 32 33 34 35 //1.什么情况下要将一个类标记为静态类 36 //- 一般情况是,当这个类是一个工具类,里面都是方法。为了让用户调用的时候方便,不需要实例化对象,这时可以将该类标记为static类,此时该类中只能包含静态成员,不能包含实例成员。比如:Convert、Math、File、Console.... 37 38 //2.什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static? 39 //- 当这个类需要被实例化的时候。如果这个类中有一个成员是所有对象都共享的数据,这时可以将该类中的这个成员标记为静态的,但是这个类还是一个实例类。 40 //Console.WriteLine(); 41 // Math. 42 } 43 } 44 45 class MyClass 46 { 47 public void M1() 48 { 49 Console.WriteLine("M1"); 50 } 51 52 public static void M2() 53 { 54 Console.WriteLine("普通类中的一个静态方法..M2"); 55 } 56 } 57 }