Algoritmy a programování III

Týden 10

Finalizační metody

Finalizátor je člen, který implementuje akce potřebné k dokončení instance třídy. K uvolnění nespravovaných prostředků se obvykle vyžaduje finalizace. Finalizátory nemohou mít parametry, nemůžou mít modifikátory přístupnosti a nelze je vyvolat explicitně. Finalizátor instance se vyvolá automaticky během uvolňování paměti. Další informace najdete v článku o finalizátorech.

Systém uvolňování paměti má povolenou širokou šířku při rozhodování, kdy shromažďovat objekty a spouštět finalizátory. Konkrétně časování volání finalizátoru není deterministické a finalizátory se můžou spouštět v libovolném vlákně. Z těchto a jiných důvodů by třídy měly implementovat finalizátory pouze v případě, že nejsou proveditelná žádná jiná řešení.

Příkaz using poskytuje lepší přístup ke zničení objektu.

Výrazy

Výrazy se konstruují z operandů a operátorů. Operátory výrazu označují, které operace se mají u operandů použít. Mezi příklady operátorů patří +-*/new. Mezi příklady operandů patří literály, pole, místní proměnné a výrazy.

Pokud výraz obsahuje více operátorů, jejich priorita určuje pořadí, ve kterém jsou jednotlivé operátory vyhodnocovány. Výraz se například vyhodnotí jakox + (y * z)x + y * z protože * operátor má vyšší prioritu + než operátor.

Pokud se operand vyskytuje mezi dvěma operátory se stejnou prioritou, asociativita operátorů řídí pořadí, ve kterém se operace provádějí:

  • S výjimkou operátorů přiřazení a spojování null jsou všechny binární operátory asociativní zleva, což znamená, že operace se provádějí zleva doprava. Například x + y + z se vyhodnotí jako (x + y) + z.
  • Operátory přiřazení, spojování a ??= operátory ?? null a podmíněný operátor ?: jsou asociativní zprava, což znamená, že operace se provádějí zprava doleva. Například x = y = z se vyhodnotí jako x = (y = z).

Prioritu a asociativitu lze řídit pomocí závorek. Například x + y * z nejprve vynásobí yz a pak přidá výsledek do x, ale (x + y) * z nejprve sečte x a y pak výsledek vynásobí .z

Většina operátorů může být přetížená. Přetížení operátoru umožňuje určit implementace operátoru definované uživatelem pro operace, kde jeden nebo oba operandy jsou typu definované uživatelem definované třídy nebo struktury.

C# poskytuje operátory pro provádění aritmetickýchlogickýchbitových a posunových operací a porovnávání rovnosti a pořadí .

Úplný seznam operátorů jazyka C# seřazených podle úrovně priority najdete v tématu Operátory jazyka C#.

Příkazy

Akce programu jsou vyjádřeny pomocí příkazů. Jazyk C# podporuje několik různých typů příkazů, z nichž řada je definována jako vložené příkazy.

  • Blok umožňuje zápis více příkazů v kontextech, ve kterých je povolen jeden příkaz. Blok se skládá ze seznamu příkazů zapsaných mezi oddělovači { a }.
  • Příkazy deklarace slouží k deklaraci místních proměnných a konstant.
  • K vyhodnocení výrazů se používají příkazy výrazů . Výrazy, které lze použít jako příkazy, zahrnují volání metod, přidělení objektů pomocí operátorunew, přiřazení pomocí = a složené operátory přiřazení, operace ++ zvýšení a snížení pomocí operátorů await a -- výrazů.
  • Příkazy výběru se používají k výběru jednoho z řady možných příkazů pro provedení na základě hodnoty některého výrazu. Tato skupina obsahuje příkazy if a switch .
  • Příkazy iterace se používají k opakovanému spuštění vloženého příkazu. Tato skupina obsahuje příkazy whilefordo, a foreach .
  • Příkazy jump se používají k přenosu řízení. Tato skupina obsahuje příkazy breakgotocontinuethrowreturn, a yield .
  • Příkaz try...catch se používá k zachycení výjimek, ke kterým dochází během provádění bloku, a trypříkaz ...finally se používá k určení kódu finalizace, který je vždy spuštěn, bez ohledu na to, zda došlo k výjimce nebo ne.
  • Příkazy checked a unchecked slouží k řízení kontextu kontroly přetečení pro aritmetické operace a převody integrálního typu.
  • Příkaz lock se používá k získání zámku vzájemného vyloučení pro daný objekt, spuštění příkazu a následnému uvolnění zámku.
  • Příkaz using se používá k získání prostředku, spuštění příkazu a následnému odstranění tohoto prostředku.

Následující seznam uvádí typy příkazů, které lze použít:

  • Deklarace místní proměnné.
  • Deklarace místní konstanty.
  • Výraz – příkaz.
  • if Prohlášení.
  • switch Prohlášení.
  • while Prohlášení.
  • do Prohlášení.
  • for Prohlášení.
  • foreach Prohlášení.
  • break Prohlášení.
  • continue Prohlášení.
  • goto Prohlášení.
  • return Prohlášení.
  • yield Prohlášení.
  • throw příkazy a try příkazy.
  • checked a unchecked příkazy.
  • lock Prohlášení.
  • using Prohlášení.