Pokud držíte nativní zdroje, implementujete jak Dispose, tak Finalize a obě zavoláte společnou metodu, která uvolní nativní zdroje. Tyto idiomy jsou obvykle kombinovány prostřednictvím soukromé metody Dispose (bool disposing), která volá Dispose s true a volání Finalize s false.
Kdy použít finalizaci vs. Likvidaci?
Metoda throw() se používá k uvolnění nespravovaných zdrojů, kdykoli je vyvolána. Metoda finalize() se používá k uvolnění nespravovaných zdrojů před zničením objektu. Metoda throw() se má implementovat vždy, když existuje metoda close().
Jaký je rozdíl mezi metodami Likvidace a Finalizace?
Hlavní rozdíl mezi vyřazením a finalizací je v tom, že metodu vyřazení musí explicitně vyvolat uživatel, zatímco metodu finalizace vyvolá sběrač odpadu těsně před objekt je zničen.
Vyhovuje používání hovoru?
Příkaz using zajišťuje, že Dispose je voláno, i když dojde k výjimce během volání metod na objektu. Stejného výsledku můžete dosáhnout vložením objektu do bloku try a následným voláním Dispose v bloku konečně; ve skutečnosti je takto překladač překládán příkaz using.
Mám zavolat Dispose C?
4 odpovědi. Základní pravidlo: pokud třída implementuje IDisposable, měli byste vždy volat metodu Dispose, jakmile skončíte s používáním tohoto zdroje Ještě lepší je zabalit ji do příkazu using, abyste zajistili, že metoda Dispose bude být volán, i když je vyvolána výjimka: using (var reader=conn.