L'espressione è un valore, quindi non può essere la destinazione di un'assegnazione

Aggiornamento: novembre 2007

Expression is a value and therefore cannot be the target of an assignment

Un'istruzione tenta di assegnare un valore a un'espressione. È possibile assegnare un valore solo a una variabile, a una proprietà o a un elemento di matrice modificabile in fase di esecuzione. Nell'esempio riportato di seguito viene illustrato come può verificarsi questo errore.

Dim yesterday As Integer
ReadOnly maximum As Integer = 45
yesterday + 1 = DatePart(DateInterval.Day, Now)
' The preceding line is an ERROR because of an expression on the left.
maximum = 50
' The preceding line is an ERROR because maximum is declared ReadOnly.

Esempi simili possono essere validi per le proprietà e gli elementi di matrice.

Accesso indiretto. Questo errore può essere generato anche dall'accesso indiretto attraverso un tipo di valore. Nell'esempio di codice riportato di seguito viene effettuato un tentativo di impostare il valore dell'oggetto Point accedendo indirettamente ad esso attraverso la proprietà Location.

' Assume this code runs inside Form1.
Dim exitButton As New System.Windows.Forms.Button()
exitButton.Text = "Exit this form"
exitButton.Location.X = 140
' The preceding line is an ERROR because of no storage for Location.

L'ultima istruzione dell'esempio precedente non viene eseguita correttamente poiché crea solo un'allocazione temporanea per la struttura dell'oggetto Point restituita dalla proprietà Location. Una struttura è un tipo di valore e la struttura temporanea non viene mantenuta dopo l'esecuzione dell'istruzione. Per risolvere il problema, è necessario dichiarare e utilizzare una variabile per la proprietà Location che crei un'allocazione più permanente per la struttura dell'oggetto Point. Nell'esempio riportato di seguito viene illustrato il codice che può sostituire l'ultima istruzione dell'esempio precedente.

Dim exitLocation as New System.Drawing.Point(140, exitButton.Location.Y)
exitButton.Location = exitLocation

ID errore: BC30068

Per correggere l'errore

  • Se l'istruzione assegna un valore a un'espressione, sostituire quest'ultima con una variabile, una proprietà o un elemento di matrice modificabile.

  • Se l'istruzione effettua l'accesso indiretto attraverso un tipo di valore, in genere una struttura, creare una variabile che contenga il tipo di valore.

  • Assegnare alla variabile la struttura o un altro tipo di valore appropriato.

  • Utilizzare la variabile per accedere alla proprietà e assegnare a quest'ultima un valore.

Vedere anche

Attività

Risoluzione dei problemi relativi alle routine

Concetti

Operatori ed espressioni in Visual Basic

Istruzioni di assegnazione