BC30068: expressão é um valor e, por isso, não pode ser o destino de uma atribuição

Uma instrução tenta atribuir um valor a uma expressão. Você pode atribuir um valor apenas a uma variável gravável, propriedade ou elemento de matriz em tempo de execução. O exemplo a seguir ilustra como esse erro pode ocorrer.

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.

Exemplos semelhantes podem ser aplicados a propriedades e elementos de matriz.

Acesso indireto. O acesso indireto por meio de um tipo de valor também pode gerar esse erro. Considere o exemplo de código a seguir, que tenta definir o valor de Point acessando-o indiretamente por meio de 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.

A última instrução do exemplo anterior falha porque cria apenas uma alocação temporária para a estrutura Point retornada pela propriedade Location. Uma estrutura é um tipo de valor e a estrutura temporária não é mantida após a execução da instrução. O problema é resolvido declarando e usando uma variável para Location, o que cria uma alocação mais permanente para a estrutura Point. O exemplo a seguir mostra o código que pode substituir a última instrução do exemplo anterior.

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

ID do erro: BC30068

Para corrigir este erro

  • Se a instrução atribuir um valor a uma expressão, substitua a expressão por uma variável gravável, uma propriedade ou um elemento de matriz único.

  • Se a instrução fizer acesso indireto por meio de um tipo de valor (geralmente uma estrutura), crie uma variável para manter o tipo de valor.

  • Atribua a estrutura apropriada (ou outro tipo de valor) à variável.

  • Use a variável para acessar a propriedade para atribuir um valor a ela.

Confira também