Udostępnij za pośrednictwem


Konstruktory (przewodnik programowania w języku C#)

Za każdym razem, gdy zostanie utworzone wystąpienie klasy lub struktury , jego konstruktor jest wywoływany. Klasa lub struktura może mieć wiele konstruktorów, które przyjmują różne argumenty. Konstruktory umożliwiają programistom ustawianie wartości domyślnych, ograniczanie wystąpień i pisanie kodu, który jest elastyczny i łatwy do odczytania. Aby uzyskać więcej informacji i przykładów, zobacz Konstruktory wystąpień i Używanie konstruktorów.

Istnieje kilka akcji, które są częścią inicjowania nowego wystąpienia. Te działania są podejmowane w następującej kolejności:

  1. Pola wystąpienia są ustawione na 0. Jest to zwykle wykonywane przez środowisko uruchomieniowe.
  2. Uruchamiane inicjatory pól. Inicjatory pól w najbardziej pochodnym przebiegu typu.
  3. Inicjatory pól typu podstawowego są uruchamiane. Inicjatory pól rozpoczynające się od bezpośredniej podstawy przez każdy typ podstawowy do System.Object.
  4. Konstruktory wystąpienia podstawowego są uruchamiane. Wszystkie konstruktory wystąpień, począwszy od Object.Object każdej klasy bazowej do bezpośredniej klasy bazowej.
  5. Konstruktor wystąpienia jest uruchamiany. Konstruktor wystąpienia dla typu jest uruchamiany.
  6. Uruchamiane inicjatory obiektów. Jeśli wyrażenie zawiera jakiekolwiek inicjatory obiektów, są one uruchamiane po uruchomieniu konstruktora wystąpienia. Inicjatory obiektów są uruchamiane w kolejności tekstowej.

Poprzednie akcje mają miejsce po zainicjowaniu nowego wystąpienia. Jeśli nowe wystąpienie obiektu struct jest ustawione na jego default wartość, wszystkie pola wystąpienia są ustawione na 0.

Jeśli konstruktor statyczny nie został uruchomiony, konstruktor statyczny jest uruchamiany przed wykonaniem jakichkolwiek akcji konstruktora wystąpienia.

Składnia konstruktora

Konstruktor jest metodą, której nazwa jest taka sama jak nazwa jego typu. Podpis metody zawiera tylko opcjonalny modyfikator dostępu, nazwę metody i listę parametrów; nie zawiera zwracanego typu. W poniższym przykładzie przedstawiono konstruktor klasy o nazwie 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.
}

Jeśli konstruktor można zaimplementować jako pojedynczą instrukcję , możesz użyć definicji treści wyrażenia. W poniższym przykładzie zdefiniowano klasęLocation, której konstruktor ma jeden parametr ciągu o nazwie name. Definicja treści wyrażenia przypisuje argument do locationName pola.

public class Location
{
   private string locationName;

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

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

Konstruktory statyczne

W poprzednich przykładach pokazano wszystkie konstruktory wystąpień, które tworzą nowy obiekt. Klasa lub struktura może również mieć konstruktor statyczny, który inicjuje statyczne elementy członkowskie typu. Konstruktory statyczne są bez parametrów. Jeśli nie podasz konstruktora statycznego do inicjowania pól statycznych, kompilator języka C# inicjuje pola statyczne do ich wartości domyślnej, jak pokazano w artykule Domyślne wartości typów języka C#.

W poniższym przykładzie użyto konstruktora statycznego do zainicjowania pola statycznego.

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

Można również zdefiniować konstruktor statyczny z definicją treści wyrażenia, jak pokazano w poniższym przykładzie.

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

Aby uzyskać więcej informacji i przykładów, zobacz Konstruktory statyczne.

W tej sekcji

Zobacz też