static关键字:用于修饰类,字段,属性,方法,构造方法等

静态字段:被static关键字修饰的字段,不属于任何对象,只属于类,必须要用类名.静态字段名进行访问

class Person
    {
        public string name;//普通字段
        public  static string address=\"上海\";//静态字段
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person();
            p1.name = \"1\";
            
            Console.WriteLine(p1.name+ \"---\"+Person.address);
            Person p2 = new Person();
            p2.name = \"2\";

            Console.ReadKey();
        }
    }

静态字段可以重新赋值,类名.静态字段名=新的值;

 Person.address = \"江苏 \";

 

静态属性:被static关键字修饰的属性,使用类名.静态属性名进行访问

静态属性不能用于封装非静态成员

 public  string Name//普通属性
        {
            get { return name; }
            set { name = value; }
        }
        public static string Address//静态属性
        {
            get { return address; }
            set { address = value; }
        }

 

静态普通方法:被static修饰的方法,直接使用类名.静态方法名进行访问

       public void P1()
        {
            Console.WriteLine(\"我是普通方法\");
        }
        public static void P2()
        {
            Console.WriteLine(\"我是静态方法\");
        }
     }
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person();
            p1.P1();
            Person.P2();
        }

静态构造方法:初始化静态成员,一个类只能有一个静态构造方法,该静态方法没有任何访问修饰符,也没有参数

静态类:当类中的成员全是静态成员时,可以把这个类声明为静态类。声明静态类需要在class关键词前加static

静态类不能实例化对象

 

单例设计模式:设计一个类,需要保证整个程序在运行期间只存在一个实例对象

  class Monkey
    {
        //(1)声明一个静态且私有的一个当前类类型的字段
        private static Monkey instance;
        //(2)创建私有无参构造方法,保证外部无法实例化这个类
        private Monkey() { }
        //(3)创建一个静态方法,用于创建此类的唯一对象
        public static Monkey Instance()
        {
            if (instance == null)
            {
                instance = new Monkey();
            }
            return instance;
        }
    }
  class Program
    {
        static void Main(string[] args)
        {

            Monkey m1 = Monkey.Instance();
            Monkey m2 = Monkey.Instance();
            Console.WriteLine(m1==m2);//true
            Console.Read();
        }
    }
}

 

 

收藏 打印