Condividi tramite


Proprietà implementate automaticamente (Visual Basic)

Le proprietà implementate automaticamente consentono di specificare rapidamente una proprietà di una classe senza dover scrivere il codice per ottenere (Get) e impostare (Set) la proprietà.Quando si scrive il codice per una proprietà implementata automaticamente, il compilatore Visual Basic crea automaticamente un campo privato per archiviare la variabile della proprietà oltre a creare le routine Get e Set associate.

Con le proprietà implementate automaticamente, una proprietà, incluso un valore predefinito, può essere dichiarata in una sola riga.Nell'esempio seguente vengono illustrate tre dichiarazioni di proprietà.

Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()

Una proprietà implementata automaticamente equivale a una proprietà per la quale il valore della proprietà viene archiviato in un campo privato.Nell'esempio di codice riportato di seguito viene illustrata una proprietà implementata automaticamente.

Property Prop2 As String = "Empty"

Nell'esempio di codice riportato di seguito viene illustrato il codice equivalente per il precedente esempio di proprietà implementata automaticamente.

Private _Prop2 As String = "Empty"
Property Prop2 As String
    Get
        Return _Prop2
    End Get
    Set(ByVal value As String)
        _Prop2 = value
    End Set
End Property

Campo sottostante

Quando si dichiara una proprietà implementata automaticamente, Visual Basic crea automaticamente un campo privato nascosto denominato campo sottostante per contenere il valore della proprietà.Il nome del campo sottostante è il nome della proprietà implementata automaticamente preceduto da un carattere di sottolineatura (_).Se, ad esempio, si dichiara una proprietà implementata automaticamente denominata ID, il campo sottostante viene denominato _ID.Se si include un membro della classe con il medesimo nome _ID, si produce un conflitto di denominazione e in Visual Basic viene segnalato un errore del compilatore.

Il campo sottostante presenta inoltre le caratteristiche seguenti:

  • Il modificatore di accesso per il campo sottostante è sempre Private, anche quando la proprietà stessa dispone di un livello di accesso diverso, ad esempio Public.

  • Se la proprietà è contrassegnata come Shared, anche il campo sottostante è condiviso.

  • Gli attributi specificati per la proprietà non si applicano al campo sottostante.

  • L'accesso al campo sottostante può essere eseguito dal codice all'interno della classe e dagli strumenti di debug quale la finestra Espressioni di controllo.Tuttavia, il campo sottostante non viene visualizzato in un elenco di completamento di parole di IntelliSense.

Inizializzazione di una proprietà implementata automaticamente

Qualsiasi espressione utilizzabile per inizializzare un campo è valida per l'inizializzazione di una proprietà implementata automaticamente.Quando si inizializza una proprietà implementata automaticamente, l'espressione viene valutata e passata alla routine Set per la proprietà.Negli esempi di codice seguenti vengono mostrate alcune proprietà implementate automaticamente che includono i valori iniziali.

Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)

Non è possibile inizializzare una proprietà implementata automaticamente che sia membro di un'Interface o una che sia contrassegnata come MustOverride.

Quando si dichiara una proprietà implementata automaticamente come membro di una Structure, è possibile inizializzare solo la proprietà implementata automaticamente se è contrassegnata come Shared.

Quando si dichiara una proprietà implementata automaticamente come matrice, non è possibile specificare limiti di matrice espliciti.Tuttavia, è possibile specificare un valore utilizzando un inizializzatore di matrice, come illustrato negli esempi seguenti.

Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}

Definizioni di proprietà che richiedono la sintassi standard

Le proprietà implementate automaticamente sono semplici da utilizzare e supportano molti scenari di programmazione.In alcune situazioni, tuttavia, non è possibile utilizzare una proprietà implementata automaticamente ed è invece necessario utilizzare la sintassi della proprietà standard o espansa.

È necessario utilizzare la sintassi di definizione della proprietà espansa se si desidera eseguire una delle operazioni seguenti:

  • Aggiungere il codice alla routine Get o Set di una proprietà, ad esempio il codice per convalidare i valori in ingresso nella routine Set.È possibile, ad esempio, verificare che una stringa che rappresenta un numero di telefono contenga il numero obbligatorio di numerali prima di impostare il valore della proprietà.

  • Specificare la diversa accessibilità per la routine Get e Set.È possibile, ad esempio, impostare la routine Set come Private e la routine Get come Public.

  • Creare proprietà WriteOnly o ReadOnly.

  • Utilizzare proprietà con parametri (incluse le proprietà Default).È necessario dichiarare una proprietà espansa per specificare un parametro per la proprietà o per specificare parametri aggiuntivi per la routine Set.

  • Inserire un attributo nel campo sottostante o modificare il livello di accesso del campo sottostante.

  • Fornire commenti XML per il campo sottostante.

Espansione di una proprietà implementata automaticamente

Se è necessario convertire una proprietà implementata automaticamente in una proprietà espansa contenente una routine Get o Set, l'editor di codice di Visual Basic può generare automaticamente le routine Get e Set e l'istruzione End Property per la proprietà.Il codice viene generato se si posiziona il cursore su una riga vuota che segue l'istruzione Property, si digita una G (per Get) o una S (per Set) e si preme INVIO.L'editor di codice di Visual Basic genera automaticamente la routine Get o Set per le proprietà di sola lettura e di sola scrittura quando si preme INVIO alla fine di un'istruzione Property.

Vedere anche

Attività

Procedura: dichiarare e chiamare una proprietà predefinita in Visual Basic

Procedura: dichiarare una proprietà con livelli di accesso misti (Visual Basic)

Riferimenti

Istruzione Property

ReadOnly (Visual Basic)

WriteOnly (Visual Basic)

Altre risorse

Oggetti e classi in Visual Basic