This article has been localized into Hungarian by the community.
Konstruktorok és destruktorok
A konstruktorok különleges metódusok, amelyek akkor vannak végrehajtva, amikor az osztályból új példányt, tehát objektumot hozunk létre. Egy konstruktor soha nem adhat vissza értéket, ezért sem kell visszatérési értéket megadni rajtuk. Egy tipikus metódust így definiálunk:
public string Describe()
Egy konstruktort ellenben így:
public Car()
Az eddig használt példánkban van egy Car osztályunk egy konstruktorral,ami stringet kap paraméterként. Természetesen konstruktorokat is túlterhelhetünk (overloading), ezáltal lehet több konstruktorunk is, amíg mind más-más paramétereket kapnak. Itt egy példa:
public Car()
{
}
public Car(string color)
{
this.color = color;
}
Konstruktor hívhat másik konstruktort is, ami pár helyzetben nagyon is hasznos lehet. Újabb példa:
public Car()
{
Console.WriteLine("Constructor with no parameters called!");
}
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
Ha futtatod a kódot, láthatod, hogy először a paraméter nélküli konstruktor fut. Ezt felhasználhatod különböző objektumok példányosítására az alapértelmezett konstruktorban, amit aztán hívhatsz az osztály más konstruktoraiból. Ha a hívni kívánt konstruktornak vannak paraméterei, azt is megteheted. Itt egy egyszerű példa:
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
public Car(string param1, string param2) : this(param1)
{
}
Ha a két paraméterrel rendelkező konstruktort hívod, akkor az első paraméter át lesz adva az egyparaméteres konstruktornak.
Destruktorok
A C# szemétgyűjtő nyelv, ami azt jelenti, hogy a keretrendszer a használatlan objektumokat automatikusan felszabadítja, de előfordulhat, hogy magadnak kell a szükségtelen dolgoktól megszabadulnod. A destruktor olyan metódus, ami az objektum begyűjtésekor hajtódik végre - ennek segítségével lezárhatod az objektum által használt erőforrásokat. A destruktorok nem nagyon hasonlítanak a szokványos C# metódusokra. Itt egy példa destruktorra a Car osztályunkban:
~Car()
{
Console.WriteLine("Out..");
}
Amint a szemétgyűjtő feltakarítja az objektumot, ez a metódus végrehajtásra kerül.