c# 构造函数
程序员文章站
2022-03-04 12:29:51
...
- 构造函数,类实例化时调用的 new 关键字就是调用的构造函数。
- 如果在类中定义了有参的构造函数,编译器就不会再生成无参的构造函数。此时若需要调用无参构造函数,需要在类中定义,否则编译器会报错。
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();
}
}
}
- 私有构造函数最典型的应用是设计模式中的单例模式
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);
}
}
- 静态构造函数。静态构造函数用于初始化类中的静态成员。静态构造函数只被执行一次
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);
}
}