C# Using Statement en C# Virtual Method Tutorial met voorbeelden

Deze diepgaande tutorial legt alles uit over C# Using Statement en Virtuele Methode. U leert ook het verschil tussen abstracte en virtuele methoden:

Het blok Gebruik helpt voornamelijk bij het beheer van middelen, het stelt het systeem in staat zijn middelen te beheren door het toepassingsgebied van het object en de vereiste middelen te specificeren.

Het .Net Framework biedt verschillende manieren voor resource management voor objecten met behulp van een garbage collector. Dit betekent dat je niet expliciet geheugenobjecten hoeft toe te wijzen en te verwijderen. Het opruimen van elk onbeheerd object wordt afgehandeld met behulp van destructor.

Om programmeurs te helpen dit te bereiken, biedt C# using statement een voorwaarde voor de vernietiging van het object.

Om automatische vernietiging van het object te bereiken, biedt C# een dispose methode die kan worden aangeroepen wanneer het object niet meer nodig is. Het using statement in C# definieert een voorwaardelijke grens voor het bestaan van het object. Zodra de uitvoeringssequentie de using grens verlaat, weet het .Net framework dat het tijd is om het object te vernietigen.

C# met behulp van verklaring

Implementeer de IDisposable interface voor het gebruik van

Met het C# Using statement kunnen programmeurs verschillende resources in één statement implementeren. Alle objecten die binnen het using code blok worden gedefinieerd moeten de IDisposable interface implementeren, en dit stelt het framework in staat om de dispose methodes voor de gespecificeerde objecten binnen het statement aan te roepen zodra het wordt verlaten.

Voorbeeld

Using statements kunnen worden gecombineerd met een type dat IDisposable kan implementeren, zoals StreamWriter, StreamReader, enz.

Laten we eens kijken naar een eenvoudig programma:

 public class Programma { 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"); } 

Uitgang

De uitvoer van het bovenstaande programma:

Binnen using statement

Verwijder methode

Buiten het using statement blok

Uitleg

In het bovenstaande voorbeeld, wanneer het programma wordt uitgevoerd, wordt eerst de instantie "SysObj" gealloceerd in de geheugenhoop. Dan begint het using blok met de uitvoering en drukt de uitvoer af die we in de console hebben gedefinieerd. Vervolgens, wanneer het Using statement blok voorbij is, wordt de uitvoering onmiddellijk overgedragen aan de dispose methode.

Dan verlaat de code het instructieblok en drukt de buitenste instructie af op de console.

C# Virtuele Methode

Wat is een virtuele methode?

Een virtuele methode is een klassemethode die de programmeur de mogelijkheid biedt een methode in de afgeleide klasse met dezelfde signatuur te overschrijven. Virtuele methoden worden vooral gebruikt om polymorfisme toe te passen in de OOP-omgeving.

Een virtuele methode kan een implementatie hebben in zowel afgeleide als basisklassen. Ze wordt vooral gebruikt wanneer een gebruiker meer functionaliteit nodig heeft in de afgeleide klasse.

Een virtuele methode wordt eerst gecreëerd in een basisklasse en vervolgens overschreven in de afgeleide klasse. Een virtuele methode kan worden gecreëerd in de basisklasse met het sleutelwoord "virtual" en dezelfde methode kan worden overschreven in de afgeleide klasse met het sleutelwoord "override".

Virtuele methoden: enkele punten om te onthouden

  • De virtuele methode in de afgeleide klasse heeft het virtuele sleutelwoord en de methode in de afgeleide klasse moet een override sleutelwoord hebben.
  • Als een methode in de basisklasse als een virtuele methode wordt gedeclareerd, dan is het niet altijd verplicht voor de afgeleide klasse om die methode te overschrijven, d.w.z. dat het optioneel is om een virtuele methode in de afgeleide klasse te overschrijven.
  • Als een methode dezelfde definitie heeft in zowel de basis- als de afgeleide klasse, dan is het niet nodig om de methode te overrulen. Overrulen is alleen nodig als beide een verschillende definitie hebben.
  • De overriding methode stelt ons in staat meer dan één vorm te gebruiken voor dezelfde methode, en toont dus ook polymorfisme.
  • Alle methoden zijn standaard niet-virtueel.
  • Een virtuele modifier kan niet worden gebruikt in combinatie met Private, Static of Abstract modifiers.

Wat is het gebruik van het virtuele sleutelwoord in C#?

Het virtuele sleutelwoord in C# wordt gebruikt om het lid van de basisklasse te overschrijven in zijn afgeleide klasse, op basis van de vereiste.

Een virtueel sleutelwoord wordt gebruikt om de virtuele methode in de basisklasse te specificeren, en de methode met dezelfde signatuur die in de afgeleide klasse moet worden overschreven, wordt voorafgegaan door het sleutelwoord override.

Verschil tussen abstracte methode en virtuele methode

Virtuele methoden bevatten implementatie en staan de afgeleide klasse toe deze te overschrijven, terwijl de abstracte methode geen implementatie biedt en de programmeurs dwingt methoden in de afgeleide klasse te overschrijven.

Met andere woorden, de abstracte methoden hebben geen code in zich, terwijl de virtuele methode een eigen implementatie heeft.

Verschil tussen virtueel en overnemen in C#

Het virtuele sleutelwoord wordt gewoonlijk gevolgd door de handtekening van de methode, eigenschap, enz. en maakt het mogelijk deze te overrulen in de afgeleide klasse. Het sleutelwoord override wordt gebruikt in de afgeleide klasse met dezelfde methode/eigenschap handtekening als in de basisklasse om override in de afgeleide klasse te bereiken.

Is het verplicht om een virtuele methode in C# te overschrijven?

De compiler zal programmeurs nooit dwingen een virtuele methode te overrulen. Het is niet altijd vereist door de afgeleide klasse om de virtuele methode te overrulen.

Voorbeeld

Laten we een voorbeeld bekijken om de virtuele methoden beter te begrijpen.

In dit voorbeeld gebruiken we twee verschillende methoden in de basisklasse, de eerste is een niet-virtuele methode en de andere is een virtuele methode met het virtuele sleutelwoord. Beide methoden worden overschreven in de afgeleide klasse.

Laten we eens kijken:

Programma

 using System; public class Program { public static void Main(string[] args) { calc = new calculate (); numbers nmbr = calc; calc.addition(); nmbr.addition(); calc.subtraction(); nmbr.subtraction(); } } public class numbers { public void addition(){ Console.WriteLine("Dit is optelmethode"); } public virtual void subtraction(){ Console.WriteLine("Dit is aftrekmethode"); }public class calculate : numbers { public void addition(){ Console.WriteLine("Dit is optelmethode in de afgeleide klasse"); } public override void subtraction(){ Console.WriteLine("Dit is aftrekmethode override in de afgeleide klasse"); } 

Uitgang

De uitvoer van het bovenstaande programma is:

Dit is toevoegingsmethode in de afgeleide klasse

Dit is de optelmethode

Dit is aftrekmethode override in afgeleide klasse

Dit is aftrekmethode override in afgeleide klasse

Uitleg

In het bovenstaande voorbeeld hebben we twee klassen, Getal en Berekenen. De basisklasse Getal heeft twee methoden, namelijk optellen en aftrekken, waarbij optellen een niet-virtuele methode is en aftrekken een virtuele methode. Wanneer we dit programma uitvoeren, wordt de virtuele methode "optellen" van de basisklasse dus overschreven in de afgeleide klasse Berekenen.

In een andere klasse "Programma" maken we een ingang om een instantie van de afgeleide klasse Berekenen te maken en dan wijzen we dezelfde instantie toe aan het instantie-object van de basisklasse.

Als we de virtuele en niet-virtuele methoden aanroepen door de instanties van de klasse te gebruiken, zien we dat de virtuele methode wordt overschreven door beide instanties te gebruiken, terwijl de niet-virtuele methode alleen wordt overschreven door de afgeleide klasse aan te roepen.

Conclusie

Het using statement in C# wordt voornamelijk gebruikt voor resource management. Het using statement definieert een voorwaardelijke grens voor het bestaan van een object.

Zodra de uitvoering het statementblok verlaat, vertelt het het framework om elk object te vernietigen dat binnen het statementblok werd gecreëerd. Code gedefinieerd binnen het statement moet ook een IDisposable interface implementeren om het .Net framework in staat te stellen de dispose methode aan te roepen voor de gedefinieerde objecten.

Met een virtuele methode kan de gebruiker een methode in de afgeleide klasse overschrijven die dezelfde signatuur heeft als de methode in de basisklasse. De virtuele methode kan worden gebruikt om polymorfisme te bereiken in objectgeoriënteerde programmeertalen.

Een virtuele methode wordt vooral gebruikt wanneer extra functionaliteit nodig is in de afgeleide klasse. Virtuele methoden kunnen niet private static of abstract zijn. Ze worden gedefinieerd door een virtueel sleutelwoord te gebruiken in de basisklasse en een override sleutelwoord in de afgeleide klasse.

Scroll naar boven