ReadOnly in Visual Basic

Per definire un campo di una classe in sola lettura utilizzo la parola chiave ReadOnly al momento della dichiarazione.

Public ReadOnly [nome] As [tipo]

Una variabile definita con ReadOnly può essere letta ma non modificata.

    Un esempio pratico

    In questa classe creo la variabile test dichiarandola ReadOnly

    1. Public Class Esempio
    2. Public ReadOnly test As Integer = 1
    3. End Class

    Poi creo un oggetto con la classe Esempio

    Dim oggetto As New Esempio()

    Dall'esterno posso leggere il valore della variabile test

    Console.Write(oggetto.test)

    Questa istruzione restituisce il valore uno

    1

    Non posso, invece, modificare il valore assegnato alla variabile test

    oggetto.test = 2

    Quest'ultima istruzione andrebbe in errore perché la variabile è solo in lettura.

    Esempio 2

    Definisco una classe con una variabile nascosta _nome.

    1. Class Persone
    2. Private _nome As String
    3. Public ReadOnly Property nome As String
    4. Get
    5. Return _nome
    6. End Get
    7. End Property
    8. Public Sub New()
    9. _nome="anonimo"
    10. End Sub
    11. Public Sub(ByBal nome As String)
    12. _nome=nome
    13. End Sub
    14. End Class

    La variabile _name alla riga 2 è del tipo Private. Quindi, non può essere vista dall'esterno.

    Nelle righe 3-7 uso una proprietà pubblica nome di sola lettura (Readonly) per consentire la lettura della variabile _name dall'esterno tramite il metodo Get.

    Infine, nelle righe 8-13 definisco due costruttori per istanziare gli oggetti.

    Quando istanzio un oggetto alla classe, alla variabile _nome viene assegnato la stringa che passo come parametro.

    oggetto = Persone("Andrea")

    Posso leggere il contenuto della variabile _nome invocando il metodo get.

    Console.Writeline(oggetto.nome)

    L'output è

    Andrea

    Non posso però modificare la variabile perché le proprietà readonly non hanno il metodo SET.

    Una volta istanziato l'oggetto, il nome non è più modificabile.

    Esempio 3

    Lo stesso codice dell'esempio 2 posso riorganizzarlo in modo più sintetico con una proprietà automatica senza usare una variabile interna

    1. Class Persone
    2. Public ReadOnly Property nome As String
    3. Public Sub New()
    4. nome="anonimo"
    5. End Sub
    6. Public Sub(ByBal nome As String)
    7. Me.nome=nome
    8. End Sub
    9. End Class

    Alla riga 2 la variabile nome è del tipo Public (pubblica) e Readonly. Quindi, può essere soltanto letta dall'esterno.

    In questo modo non devo creare un metodo Get per leggerla.

    Infine, nelle righe 3-8 definisco due costruttori per istanziare gli oggetti.

    Il codice ha lo stesso funzionamento dell'esempio 2.

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Le classi in Visual Basic