[VbNet] Differenze tra Public Function e Public Shared Function

lunedì 20 aprile 2009 - 17.12

$ilver Profilo | Junior Member

Ciao a tutti,
Programmando mi è venuto questo dubbio, come da oggetto qual'è la differenza tra public function e public shared function?
Ho provato a cercare ma le cose che ho trovato nn mi hanno convinto e allora vi chiedo:

Io ho creato una classe con due funzioni una Public l'altra public shared e vedo che se creo un'istanza nel mio codice a questa posso solo associare la public, mentre se nel mio codice faccio classe.function posso richiamare solo la shared.

Vorrei capire quali sono le differenze tra le due e perchè in un caso si vedono solo le public mentre in un altro solo le shared.

Grazie mille.


aiedail92 Profilo | Expert

Ciao

In pratica una funzione Shared (letteralmente "condivisa", generalmente viene definita "statica") è una funzione che non appartiene ad un'istanza di una classe, cioè non è dipendente da un oggetto "creato", mentre le funzioni "normali" possono essere chiamate solo su un oggetto esistente (perché in teoria dovrebbero agire su di esso)

Se hai mai usato i moduli, le funzioni Shared sono esattamente come le funzioni inserite all'interno di un modulo, che è in pratica una classe statica contenente solo metodi statici.

Per maggiori informazioni puoi guardare questo link: http://msdn.microsoft.com/it-it/library/zc2b427x.aspx

Luca

$ilver Profilo | Junior Member

Ok quindi uso la shared quando nn ho bisogno di un'istanza ma devo ottenere un risultato per il mio programma, quando invece devo ottenere un risultato per il mio oggetto uso le public normali.

Ma scusa ti faccio un altra domandina, io moduli non ne ho mai usati, uso sempre le classi ma è meglio usare questu'ultime o i moduli? e dove è meglio usare uno e usare l'altro?

Grazie mille, inoltre vi ringrazio tutti, visto che questo forum aiuta gente come me che è alle prime armi ed è pieno di informazioni utili e di persone che sanno e hanno pazienza di insegnarci quello che noi chiediamo.

Grazie davvero

aiedail92 Profilo | Expert

Ciao

Un modulo è una classe implicitamente statica, pertanto tutti i suoi membri saranno necessariamente statici. Quindi, se ti serve una classe con i parametri e le funzioni globali del programma puoi indifferentemente usare una classe con tutti i membri statici o un modulo. Il modulo invece non puoi scambiarlo con una classe normale in quanto non puoi definire membri di istanza.

>Grazie mille, inoltre vi ringrazio tutti, visto che questo forum
>aiuta gente come me che è alle prime armi ed è pieno di informazioni
>utili e di persone che sanno e hanno pazienza di insegnarci quello
>che noi chiediamo.
>
>Grazie davvero

Ovviamente siamo qui per questo

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5