构造函数(C# 编程指南)

每当创建结构时,将会调用其构造函数。 类或结构可能具有采用不同参数的多个构造函数。 使用构造函数,程序员能够设置默认值、限制实例化,并编写灵活易读的代码。 有关详细信息和示例,请参阅实例构造函数使用构造函数

构造函数语法

构造函数是一种方法,其名称与其类型的名称相同。 其方法签名仅包含可选访问修饰符、方法名称和其参数列表;它不包含返回类型。 以下示例演示一个名为 Person 的类的构造函数。

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }

   // Remaining implementation of Person class.
}

如果某个构造函数可以作为单个语句实现,则可以使用表达式主体定义。 以下示例定义 Location 类,其构造函数具有一个名为“name”的字符串参数。 表达式主体定义给 locationName 字段分配参数。

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   }
}

静态构造函数

前面的示例具有所有已展示的实例构造函数,这些构造函数创建一个新对象。 类或结构也可以具有静态构造函数,该静态构造函数初始化类型的静态成员。 静态构造函数是无参数构造函数。 如果未提供静态构造函数来初始化静态字段,C# 编译器会将静态字段初始化为其默认值,如 C# 类型的默认值中所列。

以下示例使用静态构造函数来初始化静态字段。

public class Adult : Person
{
   private static int minimumAge;

   public Adult(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Adult()
   {
      minimumAge = 18;
   }

   // Remaining implementation of Adult class.
}

也可以通过表达式主体定义来定义静态构造函数,如以下示例所示。

public class Child : Person
{
   private static int maximumAge;

   public Child(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Child() => maximumAge = 18;

   // Remaining implementation of Child class.
}

有关详细信息和示例,请参阅静态构造函数

本节内容

使用构造函数

实例构造函数

私有构造函数

静态构造函数

如何编写复制构造函数

请参阅