Classi nidificate

mercoledì 16 gennaio 2008 - 14.20

Teech Profilo | Expert

Ciao a tutti e scusatemi se chiedo ancora ma stò studiando VB.NET ed alcune cose non mi sono chiare...

Stò provando a fare una Classe che contiene una classe nidificata come di seguito riportato:

Public Class MiaClasseContenitore Protected sMiaVar As String ... Private Class MiaClasseNidificata ... Sub MiaSub() Messagebox.Show(sMiaVar) End Sub ... End Class Ene Class

Nella classe nidificata però la variabile sMiaVar non "esiste"... Ho provato con tutti i livelli di accesso ma non sono riuscito (Protected, Friend, ecc.)...

Praticamente vorrei che all'interno della mia classe venisse gestita un'altra classe senza che quest'ultima sia visibile all'esterno della classe contenitore...

Mi piace complicarmi la vita forse

Grazie mille!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

Wamba Profilo | Expert

la classe contenuta non può leggere una "variabile" (leggi attributo) della classe contenitore. Ma dal contenitore puoi vedere un attributo del contenuto.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
blogs.ugidotnet.org/WamBlog/

aiedail92 Profilo | Expert

ciao

per rendere visibile la tua variabile sMiaVar devi dichiararla come Shared, in modo che questa venga associata alla classe, e non a una specifica istanza della classe. In questo modo però la variabile sMiaVar viene condivisa da tutte le istanze della classe MiaClasseContenitore invece che averne ciascuna una propria. Spero di essere stato abbastanza chiaro...

Luca

Teech Profilo | Expert

Tutto chiarissimo...
Però non capisco perchè se dichiaro una costante Protected nella Classe contenitore la vedo senza problemi nella Classe nidificata...

Public Class MiaClasseContenitore Protected sMiaVar As String Protected Const sMiaConst As String = "Hello" ... Private Class MiaClasseNidificata ... Sub MiaSub() 'Messagebox.Show(sMiaVar) '<--- Non funzione Messagebox.Show(sMiaConst) '<--- Restituisce 'Hello' End Sub ... End Class Ene Class
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

aiedail92 Profilo | Expert

Ciao

per impostazione predefinita, tutte le costanti sono Shared, Static e ReadOnly, e questi modificatori non possono essere cambiati.

Luca

Teech Profilo | Expert

Quindi la mia dichiarazione Protected Const viene, dietro le quinte, trasformata in Shared...

Grazie mille della dritta!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5