Ignazio Catanzaro

Sviluppatore Software

C# .Net

Archivio Posts
Anno 2012

Anno 2011

Anno 2010
Sondaggio
Introdurre argomenti di software engineering in un blog può essere utile?

Si
No

Questione di....Versioning!

Molte volte mi sono stati chiesti chiarimenti riguardo la creazione di metodi virtuali, gli override e il modificatore new nella sintassi del metodo.
Il 99.9 % delle volte la situazione era un po confusa, quindi in questo post cercherò di spiegare in maniera accessibile a tutti la differenza tra le tre operazioni.

Avvaliamoci di un piccolo listato che di sicuro chiarirà le idee!


Come potete vedere, quando si parla di metodi virtuali e override c'è di mezzo SEMPRE l'ereditarietà,sono potenti strumenti della programmazione ad oggetti e vengono utilizzati abbondantemente!

Un metodo virtuale non è altro che un metodo, segnato in c# con la parola chiave virtual, che permette la modifica, o meglio la ridefinizione nelle classi che lo erediteranno.
Perchè ridefinire un metodo? Semplice, il metodo della classe base non soddisfa in parte le richieste della classe derivata.

Basti pensare al metodo virtuale ToString() (derivato dalla classe Object) che viene pesantemente ridefinito in quasi ogni classe creata dagli sviluppatori!
Ridefinendo il metodo ToString non si fa altro che effettuarne l'override!

Ad esempio, nella classe base del listato possiamo inserire il seguente codice :

public override ToString()
{
return "Versioning";
}

richiamando ora il metodo si otterrà il risultato "Versioning" :

Messagebox.Show(myDerivata.ToString());

Gli esempi da poter elencare sono tantissimi, eccone uno :


Il modificatore new invece è stato introdotto per poter "nascondere" i metodi omonimi nelle classi base, ed evitare l'alert del compilatore.
In pratica è possibile, ridefinire metodi non virtual, come potete vedere nel primo listato!

Ci sarebbero un po di cose da spiegare ma limitiamoci a capire che il modificatore new viene utilizzato quando si implementano dll scritte da terzi in cui sono presenti metodi non virtuali che vorremmo ridefinire a nostro piacimento e secondo le specifiche richieste dalla nostra classe, cosi facendo il nostro metodo nasconde (hide) il metodo base eseguendo l'implementazione da noi creata!

Stay Tuned!

Categoria: Framework .Net
lunedì, 05 apr 2010 Ore. 00.14

Calendario
dicembre 2022
lmmgvsd
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Ora e Data
Statistiche
  • Views Home Page: 30.371
  • Views Posts: 42.507
  • Views Gallerie: 0
  • n° Posts: 24
  • n° Commenti: 12
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003