C# Používanie príkazu a C# Virtual Method Tutorial s príkladmi

Tento podrobný kurz vysvetľuje všetko o používaní príkazov a virtuálnych metód v jazyku C#. Dozviete sa tiež, aký je rozdiel medzi abstraktnými a virtuálnymi metódami:

Blok Using pomáha hlavne pri správe zdrojov, umožňuje systému spravovať svoje zdroje určením rozsahu objektu a jeho požiadavky na zdroje.

Prostredie .Net Framework ponúka rôzne spôsoby správy zdrojov pre objekty pomocou garbage collectora. To znamená, že nemusíte explicitne alokovať a odstraňovať objekty z pamäte. Operácia čistenia pre akýkoľvek nespravovaný objekt sa vykoná pomocou deštruktora.

Programátorom to uľahčuje príkaz using v jazyku C#, ktorý obsahuje podmienku pre zničenie objektu.

Na dosiahnutie automatického zničenia objektu ponúka jazyk C# metódu dispose, ktorú možno zavolať, keď objekt už nie je potrebný. Príkaz using v jazyku C# definuje podmienenú hranicu existencie objektu. Keď vykonávacia sekvencia opustí hranicu using, rámec .Net bude vedieť, že je čas tento objekt zničiť.

Používanie príkazu v jazyku C#

Implementácia rozhrania IDisposable Na používanie

Príkaz Using v jazyku C# umožňuje programátorom implementovať niekoľko zdrojov v jednom príkaze. Všetky objekty definované vnútri bloku kódu using by mali implementovať rozhranie IDisposable, a to umožňuje frameworku po ukončení príkazu zavolať metódy dispose pre zadané objekty vo vnútri príkazu.

Príklad

Používanie príkazov možno kombinovať s typom, ktorý môže implementovať IDisposable, ako napríklad StreamWriter, StreamReader atď.

Pozrime sa na jednoduchý program:

 public class Program { public static void Main(string[] args) { using (SysObj so = new SysObj()) { Console.WriteLine("Inside using statement"); } Console.WriteLine("Outside of the using statement block"); } } class SysObj : IDisposable { public void Dispose() { Console.WriteLine("Dispose method"); } } } 

Výstup

Výstup vyššie uvedeného programu:

Vnútri príkazu using

Metóda likvidácie

Mimo bloku príkazov using

Vysvetlenie

V uvedenom príklade sa pri vykonávaní programu najprv v halde pamäte alokuje inštancia "SysObj". Potom sa začne vykonávať blok Using a vypíše výstup, ktorý sme definovali vo vnútri konzoly. Ďalej, keď sa blok príkazu Using skončí, vykonávanie sa okamžite prenesie na metódu Dispose.

Potom kód ukončí blok príkazov a vypíše vonkajší príkaz na konzolu.

Virtuálna metóda C#

Čo je to virtuálna metóda?

Virtuálna metóda je metóda triedy, ktorá ponúka programátorovi funkcionalitu na prepis metódy v odvodenej triede, ktorá má rovnakú signatúru. Virtuálne metódy sa používajú najmä na vykonávanie polymorfizmu v prostredí OOP.

Virtuálna metóda môže mať implementáciu v odvodenej aj základnej triede. Používa sa hlavne vtedy, keď používateľ potrebuje mať v odvodenej triede viac funkcií.

Virtuálna metóda sa najprv vytvorí v základnej triede a potom sa prepíše v odvodenej triede. Virtuálnu metódu možno vytvoriť v základnej triede pomocou kľúčového slova "virtual" a tú istú metódu možno prepísať v odvodenej triede pomocou kľúčového slova "override".

Virtuálne metódy: Niekoľko bodov, ktoré si treba zapamätať

  • Virtuálna metóda v odvodenej triede má kľúčové slovo virtual a metóda v odvodenej triede by mala mať kľúčové slovo override.
  • Ak je metóda deklarovaná ako virtuálna metóda v základnej triede, potom nie je vždy potrebné, aby odvodená trieda túto metódu prepisovala, t. j. prepisovanie virtuálnej metódy v odvodenej triede je voliteľné.
  • Ak má metóda rovnakú definíciu v základnej aj odvodenej triede, potom nie je potrebné metódu prepisovať. Prepisovanie sa vyžaduje len vtedy, ak majú obe triedy odlišnú definíciu.
  • Nadradená metóda nám umožňuje použiť viacero foriem pre tú istú metódu, a preto sa v nej prejavuje aj polymorfizmus.
  • Všetky metódy sú predvolene nevirtuálne.
  • Virtuálny modifikátor nemožno použiť spolu s modifikátormi Private, Static alebo Abstract.

Aké je použitie virtuálneho kľúčového slova v jazyku C#?

Kľúčové slovo virtual v jazyku C# sa používa na prepis člena základnej triedy v jej odvodenej triede na základe požiadavky.

Kľúčové slovo virtual sa používa na špecifikáciu virtuálnej metódy v základnej triede a metóde s rovnakou signatúrou, ktorá má byť prepisovaná v odvodenej triede, predchádza kľúčové slovo override.

Rozdiel medzi abstraktnou metódou a virtuálnou metódou

Virtuálne metódy obsahujú implementáciu a umožňujú odvodenej triede ich prepisovanie, zatiaľ čo abstraktná metóda neponúka žiadnu implementáciu a núti programátorov písať prepisovacie metódy v odvodenej triede.

Zjednodušene povedané, abstraktné metódy v sebe nemajú žiadny kód, zatiaľ čo virtuálna metóda má svoju vlastnú implementáciu.

Rozdiel medzi virtuálnym a prevzatým v jazyku C#

Kľúčové slovo virtual zvyčajne nasleduje za signatúrou metódy, vlastnosti atď. a umožňuje jej prepisovanie v odvodenej triede. Kľúčové slovo override sa používa v odvodenej triede s rovnakou signatúrou metódy/vlastnosti ako v základnej triede, aby sa dosiahlo prepisovanie v odvodenej triede.

Je povinné prepisovať virtuálnu metódu v jazyku C#?

Prekladač nikdy nebude programátorom vnucovať, aby virtuálnu metódu prepisovali. Nie vždy je potrebné, aby odvodená trieda virtuálnu metódu prepisovala.

Príklad

Pozrime sa na príklad, aby sme lepšie pochopili virtuálne metódy.

V tomto príklade budeme v základnej triede používať dve rôzne metódy, prvá je nevirtuálna metóda a druhá je virtuálna metóda s kľúčovým slovom virtual. Obe tieto metódy budú v odvodenej triede prepisované.

Pozrime sa na to:

Program

 using System; public class Program { public static void Main(string[] args) { calculate calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine("Toto je metóda sčítania"); } public virtual void subtraction(){ Console.WriteLine("Toto je metóda odčítania"); } }public class calculate : numbers { public void addition(){ Console.WriteLine("Toto je metóda sčítania v odvodenej triede"); } public override void subtraction(){ Console.WriteLine("Toto je override metódy odčítania v odvodenej triede"); } } 

Výstup

Výstup vyššie uvedeného programu je:

Toto je doplnková metóda v odvodenej triede

Toto je metóda pridávania

Toto je prepis metódy odčítania v odvodenej triede

Toto je prepis metódy odčítania v odvodenej triede

Vysvetlenie

V uvedenom príklade máme dve triedy, t. j. Number a Calculate. Základná trieda Number má dve metódy, t. j. sčítanie a odčítanie, pričom sčítanie je nevirtuálna metóda a odčítanie je virtuálna metóda. Preto keď spustíme tento program, virtuálna metóda základnej triedy "sčítanie" je nadradená v odvodenej triede Calculate.

V inej triede "Program" vytvoríme vstupný bod na vytvorenie inštancie odvodenej triedy Calculate a potom tú istú inštanciu priradíme objektu inštancie základnej triedy.

Keď voláme virtuálne a nevirtuálne metódy pomocou inštancií triedy, vidíme, že virtuálna metóda bola nadradená pomocou oboch inštancií, zatiaľ čo nevirtuálna metóda bola nadradená len pri volaní odvodenej triedy.

Záver

Príkaz using v jazyku C# sa používa najmä na správu zdrojov. Príkaz using definuje podmienenú hranicu existencie objektu.

Keď sa vykonávanie presunie mimo bloku príkazov, oznámi frameworku, aby zničil všetky objekty, ktoré boli vytvorené vo vnútri bloku príkazov. Kód definovaný vo vnútri príkazu by mal tiež implementovať rozhranie IDisposable, aby umožnil frameworku .Net zavolať metódu dispose pre definované objekty.

Virtuálna metóda umožňuje používateľovi prepísať metódu v odvodenej triede, ktorá má rovnakú signatúru ako metóda v základnej triede. Virtuálnu metódu možno použiť na dosiahnutie polymorfizmu v objektovo orientovaných programovacích jazykoch.

Virtuálna metóda sa používa hlavne vtedy, keď sa v odvodenej triede vyžaduje dodatočná funkčnosť. Virtuálne metódy nemôžu byť privátne statické alebo abstraktné. Definuje sa pomocou kľúčového slova virtual v základnej triede a kľúčového slova override v odvodenej triede.

Posunúť hore