コンストラクター (C# プログラミング ガイド)Constructors (C# Programming Guide)

クラスまたは構造体を作成するたびに、コンストラクターが呼び出されます。Whenever a class or struct is created, its constructor is called. クラスまたは構造体には、異なる引数を取るコンストラクターが複数含まれていることがあります。A class or struct may have multiple constructors that take different arguments. プログラマーはコンストラクターを利用することで、既定値を設定したり、インスタンス化を制限したり、柔軟で読みやすいコードを記述したりできます。Constructors enable the programmer to set default values, limit instantiation, and write code that is flexible and easy to read. 詳細と例については、「コンストラクターの使用」と「インスタンス コンストラクター」を参照してください。For more information and examples, see Using Constructors and Instance Constructors.

既定のコンストラクターDefault constructors

クラスにコンストラクターを指定しない場合、C# では既定でコンストラクターが 1 つ作成されます。そのコンストラクターによりオブジェクトがインスタンス化され、「既定値の一覧表」の一覧にある既定値にメンバー変数が設定されます。If you don't provide a constructor for your class, C# creates one by default that instantiates the object and sets member variables to the default values as listed in the Default Values Table. 構造体にコンストラクターを指定しない場合、C# では、暗黙的既定コンストラクターを利用し、「既定値の一覧表」の一覧にある既定値に値の型の各フィールドが自動的に初期化されます。If you don't provide a constructor for your struct, C# relies on an implicit default constructor to automatically initialize each field of a value type to its default value as listed in the Default Values Table. 詳細と例については、「インスタンス コンストラクター」を参照してください。For more information and examples, see Instance Constructors.

コンストラクターの構文Constructor syntax

コンストラクターは、名前がその型の名前と同じメソッドです。A constructor is a method whose name is the same as the name of its type. メソッド シグネチャには、メソッド名とそのパラメーター リストだけが含まれます。戻り値の型は含まれません。Its method signature includes only the method name and its parameter list; it does not include a return type. 次の例は、Person という名前のクラスのコンストラクターを示しています。The following example shows the constructor for a class named 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.
}

コンストラクターを 1 つのステートメントとして実装できる場合、式の本体の定義を利用できます。If a constructor can be implemented as a single statement, you can use an expression body definition. 次の例では、コンストラクターに name という名前の文字列パラメーターが 1 つある Location クラスが定義されています。The following example defines a Location class whose constructor has a single string parameter named name. 式の本体の定義により locationName フィールドに引数が割り当てられます。The expression body definition assigns the argument to the locationName field.

public class Location
{
   private string locationName;
   
   public Location(string name) => Name = name;

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

静的コンストラクターStatic constructors

前の例には、表示されるすべてのインスタンス コンストラクターがあり、それが新しいオブジェクトを作成します。The previous examples have all shown instance constructors, which create a new object. クラスまたは構造体には静的コンストラクターを与えることもできます。静的コンストラクターは型の静的メンバーを初期化します。A class or struct can also have a static constructor, which initializes static members of the type. 静的コンストラクターにはパラメーターがありません。Static constructors are parameterless. 静的コンストラクターを指定して静的フィールドを初期化しない場合、C# コンパイラは、「既定値の一覧表」の一覧にある既定値に静的フィールドを初期化する既定の静的コンストラクターを与えます。If you don't provide a static constructor to initialize static fields, the C# compiler will supply a default static constructor that initializes static fields to their default value as listed in the Default Values Table.

次の例では、静的コンストラクターを使用して静的フィールドを初期化しています。The following example uses a static constructor to initialize a static field.

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.
}

式の本体の定義で静的コンストラクターを定義することもできます。次の例をご覧ください。You can also define a static constructor with an expression body definition, as the following example shows.

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.
}

詳細と例については、「静的コンストラクター」を参照してください。For more information and examples, see Static Constructors.

このセクションの内容In This Section

コンストラクターの使用Using Constructors

インスタンス コンストラクターInstance Constructors

プライベート コンストラクターPrivate Constructors

静的コンストラクターStatic Constructors

方法: コピー コンストラクターを記述するHow to: Write a Copy Constructor

関連項目See also