This article has been localized into Czech by the community.
Konstruktory a destruktory
Konstruktory jsou speciální metody používané při vytváření instancí třídy. Konstruktér nemůže nikdy nic vrátit, a proto nemusíte definovat návratový typ. Normální metoda je definována takto:
public string Describe()
Konstruktor může být definován takto:
public Car()
V našem příkladu pro tuto kapitolu máme třídu Car s konstruktérem, který má argument jako řetězec. Samozřejmě, že konstruktér může být přetížen, což znamená, že můžeme mít několik konstruktorů se stejným názvem, ale s různými parametry. Zde je příklad:
public Car()
{
}
public Car(string color)
{
this.color = color;
}
Konstruktér může zavolat dalšího konstruktér, který může přijít vhod v několika situací. Zde je příklad:
public Car()
{
Console.WriteLine("Constructor with no parameters called!");
}
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
Pokud spustíte tento kód, uvidíte, že konstruktor bez parametrů se vykoná dříve. Toto může být využito pro vytvoření instance objektů pro třídu v základním konstruktoru, které mohou být volány z ostatních konstuktorů třídy. Pokud konstruktor, jež si přeješ zavolat, obsahuje parametry, můžeš to tak také udělat. Zde je jednoduchý příklad:
public Car(string color) : this()
{
this.color = color;
Console.WriteLine("Constructor with color parameter called!");
}
public Car(string param1, string param2) : this(param1)
{
}
Pokud zavoláte konstruktoru, který má 2 parametry, bude první parametr použit pro vyvolání konstruktoru, který má jeden parametr.
Destruktory
Vzhledem k tomu, že C# používá správu paměti prostřednictvím garbage collectoru (sběrače odpadků), což znamená, že framework uvolňuje objekty, které již nejsou používány, mohou nastat případy, kdy je třeba provést nějaký ruční úklid. Destruktor, metoda volaná jednou, když je objekt zlikvidován, může býti použita k vyčištění prostředků používaných daným objektem. Destruktory v C# nevypadají příliš podobně jako jiné metody. Zde je příklad destruktoru pro naši třídu Car:
~Car()
{
Console.WriteLine("Out..");
}
Jakmile je objekt sesbírán garbage collectorem, zavolá se tato metoda.