c# 构造函数

  1. 构造函数,类实例化时调用的 new 关键字就是调用的构造函数。
  2. 如果在类中定义了有参的构造函数,编译器就不会再生成无参的构造函数。此时若需要调用无参构造函数,需要在类中定义,否则编译器会报错。
     class Person
    {
        private string name;
        public string Name 
        {
            get { return name; }
        }
        public Person()//实例构造函数(无参构造函数)
        {
            this.name = "keeping moving";
        }
        public Person(string strname)//有参构造函数
        {
            this.name = strname;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();//调用无参构造函数
            Console.WriteLine(person.Name);

            Person person2 = new Person("li ming");//调用有参构造函数。
            Console.WriteLine(person2.Name);
            Console.ReadKey();

        }
    }
}
  1. 私有构造函数最典型的应用是设计模式中的单例模式
 class PersonS 
    {
        private string name;
        public static PersonS person;
        public string Name 
        {
            get { return name; }
        }
        //私有构造函数,只能在类的内部调用。
        private PersonS()
        {
            Console.WriteLine("调用了私有构造函数!");
            this.name = "learning hard";

        }
        public static PersonS GetInstance() 
        {
            person = new PersonS();
            return person;
        }
    }
      class Program
    {
        static void Main(string[] args)
        {     //单例模式
              PersonS p = PersonS.GetInstance();
            Console.WriteLine(p.Name);
        }
     }
  1. 静态构造函数。静态构造函数用于初始化类中的静态成员。静态构造函数只被执行一次
     class PersonSta 
    {
        private static string name;//静态字段
        public static string Name //静态属性
        {
            get 
            {
                return name;
            }
        }
        static PersonSta() //静态构造函数,仅执行一次
        {
            Console.WriteLine("静态构造函数被调用了");
            name = "keep moving";

        }

    }
      class Program
    {
        static void Main(string[] args)
        {
          //调用了两次,‘静态构造函数被调用了’--这句只被打印了一次。
              Console.WriteLine(PersonSta.Name);
            Console.WriteLine(PersonSta.Name);
        }
     }
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页