Share via


Konstruktorok (C# programozási útmutató)

Amikor létrejön egy osztály vagy egy szerkezet egy példánya, annak konstruktorát meghívja a program. Egy osztály vagy szerkezet több konstruktorsal is rendelkezhet, amelyek különböző argumentumokat használnak. A konstruktorok lehetővé teszik a programozó számára az alapértelmezett értékek beállítását, a példányosítás korlátozását és a rugalmas és könnyen olvasható kód írását. További információkért és példákért lásd : Példánykonstruktorok és konstruktorok használata.

Több művelet is része egy új példány inicializálásának. Ezek a műveletek a következő sorrendben történnek:

  1. A példánymezők értéke 0. Ezt általában a futtatókörnyezet végzi.
  2. A mező inicializálói futnak. A mező inicializálói a legelterjedtebb típusban futnak.
  3. Az alaptípus mező inicializálói futnak. A mező inicializálói a közvetlen alaptól kezdve az egyes alaptípusoktól kezdve a következőig System.Object: .
  4. Az alappéldány-konstruktorok futnak. Minden példánykonstruktor, kezdve az egyes alaposztályokon Object.Object át a közvetlen alaposztályig.
  5. A példánykonstruktor fut. A típus példánykonstruktora fut.
  6. Az objektum inicializálói futnak. Ha a kifejezés tartalmaz objektum inicializálókat, azok a példánykonstruktor futtatása után futnak. Az objektum inicializálói szöveges sorrendben futnak.

Az előző műveletek egy új példány inicializálásakor történnek. Ha egy struct új példány értéke az értékére default van állítva, az összes példánymező értéke 0.

Ha a statikus konstruktor nem fut, a statikus konstruktor a példánykonstruktori műveletek végrehajtása előtt fut.

Konstruktor szintaxisa

A konstruktor olyan metódus, amelynek neve megegyezik a típus nevével. A metódusa aláírása csak egy választható hozzáférés-módosító, a metódus neve és paraméterlistája; nem tartalmaz visszatérési típust. Az alábbi példa egy nevesített Personosztály konstruktorát mutatja be.

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

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

   // Remaining implementation of Person class.
}

Ha egy konstruktor egyetlen utasításként implementálható, használhat kifejezéstörzsdefiníciót. Az alábbi példa egy osztályt Location határoz meg, amelynek konstruktorának neve egyetlen sztringparaméterrel rendelkezik. A kifejezés törzsdefiníciója hozzárendeli az argumentumot a locationName mezőhöz.

public class Location
{
   private string locationName;

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

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

Statikus konstruktorok

Az előző példákban az összes látható példánykonstruktor látható, amelyek új objektumot hoznak létre. Egy osztály vagy szerkezet statikus konstruktort is tartalmazhat, amely inicializálja a típus statikus tagjait. A statikus konstruktorok paraméter nélküliek. Ha nem biztosít statikus konstruktort a statikus mezők inicializálásához, a C#-fordító inicializálja a statikus mezőket az alapértelmezett értékükre a C# típusú cikkek alapértelmezett értékei között.

Az alábbi példa statikus konstruktor használatával inicializál egy statikus mezőt.

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

A statikus konstruktorokat kifejezéstörzsdefinícióval is definiálhatja, ahogy az az alábbi példában is látható.

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

További információkért és példákért lásd: Statikus konstruktorok.

A szakasz tartalma

Lásd még