This article is currently in the process of being translated into Czech (~64% done).
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.
Destructors
Since C# is garbage collected, meaning that the framework will free the objects that you no longer use, there may be times where you need to do some manual cleanup. A destructor, a method called once an object is disposed, can be used to cleanup resources used by the object. Destructors doesn't look very much like other methods in C#. Here is an example of a destructor for our Car class:
~Car()
{
Console.WriteLine("Out..");
}
Once the object is collected by the garbage collector, this method is called.