c using statement c virtual method tutorial with examples
Questo tutorial approfondito spiega tutto sull'utilizzo di istruzioni e metodo virtuale di C #. Imparerai anche la differenza tra metodi astratti e virtuali:
Il blocco Using aiuta principalmente nella gestione delle risorse, consente al sistema di gestire le sue risorse specificando l'ambito dell'oggetto e il suo fabbisogno di risorse.
.Net Framework offre diversi modi per la gestione delle risorse per gli oggetti utilizzando un garbage collector. Significa che non è necessario allocare e rimuovere esplicitamente gli oggetti di memoria. L'operazione di pulizia per qualsiasi oggetto non gestito verrà gestita utilizzando il distruttore.
Per aiutare i programmatori a raggiungere questo obiettivo, l'istruzione using in C # fornisce una condizione per la distruzione dell'oggetto.
=> Dai un'occhiata alla guida di formazione gratuita per C # qui .
Per ottenere la distruzione automatica dell'oggetto, C # offre un metodo dispose che può essere chiamato quando l'oggetto non è più necessario. L'istruzione using in C # definisce un limite condizionale per l'esistenza dell'oggetto. Una volta che la sequenza di esecuzione lascia il limite di utilizzo, il framework .Net saprà che è il momento di distruggere quell'oggetto.
Cosa imparerai:
Istruzione Using C #
Implementare l'interfaccia IDisposable per l'utilizzo
L'istruzione C # Using consente ai programmatori di implementare diverse risorse in un'unica istruzione. Tutti gli oggetti definiti all'interno del blocco di codice using dovrebbero implementare l'interfaccia IDisposable, e ciò consente al framework di chiamare i metodi dispose per gli oggetti specificati all'interno dell'istruzione una volta che è uscito.
Esempio
Le istruzioni Using possono essere combinate con un tipo che può implementare IDisposable come StreamWriter, StreamReader, ecc.
Diamo un'occhiata a un semplice programma:
come aprire un file apk in windows
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'); } }
Produzione
L'output del programma sopra:
Inside using statement
Metodo di smaltimento
Al di fuori del blocco di istruzioni using
Spiegazione
Nell'esempio precedente, quando il programma viene eseguito, prima l'istanza 'SysObj' viene allocata nell'heap di memoria. Quindi il blocco using inizia l'esecuzione e stampa l'output che abbiamo definito all'interno della console. Successivamente, quando il blocco di istruzioni Using viene superato, l'esecuzione viene immediatamente trasferita al metodo dispose.
Quindi il codice esce dal blocco di istruzioni e stampa l'istruzione esterna sulla console.
Metodo virtuale C #
Cos'è un metodo virtuale?
Un metodo virtuale è un metodo di classe che offre funzionalità al programmatore per sovrascrivere un metodo nella classe derivata che ha la stessa firma. I metodi virtuali vengono utilizzati principalmente per eseguire il polimorfismo nell'ambiente OOP.
Un metodo virtuale può avere un'implementazione sia nelle classi derivate che in quelle base. Viene utilizzato principalmente quando un utente deve disporre di più funzionalità nella classe derivata.
Un metodo virtuale viene prima creato in una classe base e quindi viene sovrascritto nella classe derivata. Un metodo virtuale può essere creato nella classe di base utilizzando la parola chiave 'virtual' e lo stesso metodo può essere sovrascritto nella classe derivata utilizzando la parola chiave 'override'.
Metodi virtuali: pochi punti da ricordare
- Il metodo virtuale nella classe derivata ha la parola chiave virtual e il metodo nella classe derivata dovrebbe avere una parola chiave di sostituzione.
- Se un metodo viene dichiarato come metodo virtuale nella classe base, non è sempre richiesto dalla classe derivata sovrascrivere tale metodo, ovvero è facoltativo sovrascrivere un metodo virtuale nella classe derivata.
- Se un metodo ha la stessa definizione sia nella classe di base che in quella derivata, non è necessario sovrascrivere il metodo. L'override è necessario solo se entrambi hanno una definizione diversa.
- Il metodo di override ci consente di utilizzare più di un modulo per lo stesso metodo, quindi mostra anche polimorfismo.
- Tutti i metodi sono non virtuali per impostazione predefinita.
- Un modificatore virtuale non può essere utilizzato insieme a modificatori privati, statici o astratti.
Qual è l'uso della parola chiave virtuale in C #?
La parola chiave virtual in C # viene utilizzata per sostituire il membro della classe di base nella relativa classe derivata in base al requisito.
non ho un gateway predefinito
Una parola chiave virtuale viene utilizzata per specificare il metodo virtuale nella classe base e il metodo con la stessa firma che deve essere sovrascritto nella classe derivata è preceduto dalla parola chiave override.
Differenza tra metodo astratto e metodo virtuale
I metodi virtuali contengono l'implementazione e consentono alla classe derivata di sovrascriverla mentre il metodo astratto non offre alcuna implementazione e costringe i programmatori a scrivere metodi di sovrascrittura nella classe derivata.
Quindi, in parole semplici, i metodi astratti non hanno alcun codice al loro interno mentre il metodo virtuale ha la sua implementazione.
Differenza tra Virtual e Override in C #
La parola chiave virtual è solitamente seguita dalla firma del metodo, della proprietà, ecc. E consente di sovrascriverla nella classe derivata. La parola chiave override viene utilizzata nella classe derivata con la stessa firma di metodo / proprietà della classe base per ottenere l'override nella classe derivata.
È obbligatorio eseguire l'override del metodo virtuale in C #?
Il compilatore non imporrà mai ai programmatori di sovrascrivere un metodo virtuale. Non è sempre richiesto dalla classe derivata per sovrascrivere il metodo virtuale.
Esempio
Diamo un'occhiata a un esempio per comprendere più chiaramente i metodi virtuali.
In questo esempio, utilizzeremo due metodi diversi nella classe base, il primo è un metodo non virtuale e l'altro è un metodo virtuale con la parola chiave virtual. Entrambi questi metodi verranno sovrascritti nella classe derivata.
Diamo uno sguardo:
Programma
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('This is addition method'); } public virtual void subtraction(){ Console.WriteLine('This is subtraction method'); } } public class calculate : numbers { public void addition(){ Console.WriteLine('This is addition method in the derived class'); } public override void subtraction(){ Console.WriteLine('This is subtraction method override in derived class'); } }
Produzione
L'output del programma di cui sopra è:
Questo è il metodo di addizione nella classe derivata
Questo è un metodo di addizione
Questo è l'override del metodo di sottrazione nella classe derivata
Questo è l'override del metodo di sottrazione nella classe derivata
quale dei seguenti è uno dei framework di test più popolari?
Spiegazione
Nell'esempio sopra, abbiamo due classi, ovvero Numero e Calcola. La classe di base Number ha due metodi, ovvero addizione e sottrazione in cui l'addizione è un metodo non virtuale e la sottrazione è un metodo virtuale. Quindi, quando eseguiamo questo programma, il metodo virtuale della classe base 'addizione' viene sovrascritto nella classe derivata Calculate.
In un'altra classe 'Program' creiamo un punto di ingresso per creare un'istanza della classe derivata Calculate e quindi assegniamo la stessa istanza all'oggetto istanza della classe base.
Quando chiamiamo i metodi virtuale e non virtuale utilizzando le istanze della classe, vediamo che il metodo virtuale è stato sovrascritto utilizzando entrambe le istanze mentre il metodo non virtuale è stato sovrascritto solo durante la chiamata della classe derivata.
Conclusione
L'istruzione using in C # viene utilizzata principalmente per la gestione delle risorse. L'istruzione using definisce un limite condizionale per l'esistenza di un oggetto.
Una volta che l'esecuzione esce dal blocco di istruzioni, dice al framework di distruggere qualsiasi oggetto che è stato creato all'interno del blocco di istruzioni. Il codice definito all'interno dell'istruzione dovrebbe anche implementare un'interfaccia IDisposable per consentire al framework .Net di chiamare il metodo dispose per gli oggetti definiti.
Un metodo virtuale consente all'utente di sovrascrivere un metodo nella classe derivata che ha la stessa firma del metodo nella classe base. Il metodo virtuale può essere utilizzato per ottenere il polimorfismo nei linguaggi di programmazione orientati agli oggetti.
Un metodo virtuale viene utilizzato principalmente quando è richiesta una funzionalità aggiuntiva nella classe derivata. I metodi virtuali non possono essere statici privati o astratti. Viene definito utilizzando una parola chiave virtuale nella classe base e la parola chiave override nella classe derivata.
=> Guarda qui le esercitazioni di formazione approfondite su C #
Lettura consigliata
- Tutorial Python DateTime con esempi
- Selenio Trova elemento per tutorial di testo con esempi
- Metodo MongoDB Sort () con esempi
- Documento di query MongoDB utilizzando il metodo Find () (esempi)
- Utilizzo del cursore in MongoDB con esempi
- Classi e oggetti C #: un'esercitazione approfondita con esempi
- Tutorial sullo scripting della shell di Unix con esempi
- Esercitazione sulla gestione delle eccezioni C # con esempi di codice