Konstruktory (průvodce programováním v C#)

Při každém vytvoření instance třídy nebo struktury je volána jeho konstruktor. Třída nebo struktura mohou mít více konstruktorů, které přebírají různé argumenty. Konstruktory umožňují programátoru nastavit výchozí hodnoty, omezit vytváření instancí a psát kód, který je flexibilní a snadno čitelný. Další informace a příklady naleznete v tématu Konstruktory instance a Použití konstruktorů.

Inicializace nové instance je součástí několika akcí. Tyto akce se provádějí v následujícím pořadí:

  1. Pole instance jsou nastavená na hodnotu 0. To obvykle provádí modul runtime.
  2. Spustí se inicializátory polí. Inicializátory polí ve většině odvozených typů se spustí.
  3. Spustí se inicializátory pole základního typu. Inicializátory polí začínající přímou základnou prostřednictvím každého základního typu do System.Object.
  4. Spouští se konstruktory základní instance. Všechny konstruktory instancí, počínaje Object.Object každou základní třídou do přímé základní třídy.
  5. Spustí se konstruktor instance. Spustí se konstruktor instance pro typ.
  6. Spouští se inicializátory objektů. Pokud výraz obsahuje jakékoli inicializátory objektů, spustí se po spuštění konstruktoru instance. Inicializátory objektů se spouští v textovém pořadí.

Předchozí akce se provádějí při inicializaci nové instance. Pokud je nová instance objektu struct nastavena na hodnotu default , jsou všechna pole instance nastavena na hodnotu 0.

Pokud se statický konstruktor nespustí, statický konstruktor se spustí před provedením jakékoli akce konstruktoru instance.

Syntaxe konstruktoru

Konstruktor je metoda, jejíž název je stejný jako název jeho typu. Podpis metody obsahuje pouze volitelný modifikátor přístupu, název metody a seznam parametrů. Neobsahuje návratový typ. Následující příklad ukazuje konstruktor pro třídu s názvem 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.
}

Pokud lze konstruktor implementovat jako jeden příkaz, můžete použít definici těla výrazu. Následující příklad definuje Location třídu, jejíž konstruktor má jeden řetězcový parametr s názvem name. Definice těla výrazu přiřadí argument poli locationName .

public class Location
{
   private string locationName;

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

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

Statické konstruktory

Předchozí příklady obsahují všechny zobrazené konstruktory instancí, které vytvoří nový objekt. Třída nebo struktura může mít také statický konstruktor, který inicializuje statické členy typu. Statické konstruktory jsou bez parametrů. Pokud nezadáte statický konstruktor pro inicializaci statických polí, kompilátor jazyka C# inicializuje statická pole na výchozí hodnotu uvedenou v článku Výchozí hodnoty typů jazyka C#.

Následující příklad používá statický konstruktor k inicializaci statického pole.

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

Můžete také definovat statický konstruktor s definicí těla výrazu, jak ukazuje následující příklad.

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

Další informace a příklady naleznete v tématu Statické konstruktory.

V tomto oddílu

Viz také