Поделиться через


Нельзя присвоить значение выражению, поскольку оно является значением

Обновлен: Ноябрь 2007

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

Инструкция пытается присвоить значение выражению. Можно назначить значение только записываемой переменной, свойству или элементу массива во время выполнения. В следующем примере показано, как эта ошибка может возникать.

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.

Аналогичные примеры можно применить к свойствам и элементам массива.

Косвенный доступ. Эта ошибка может быть также вызвана косвенным доступом через тип "значение". Рассмотрим следующий пример кода, который пытается установить значение Point путем доступа к нему косвенно через 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.

Последняя инструкция из предыдущего примера завершается сбоем, так как она создает только временное выделение памяти для структуры Point, возвращенной свойством Location. Структура является типом "значение", а временная структура не сохраняется после выполнения инструкции. Проблема решается путем объявления и использования переменной для Location, которая создает постоянное выделение памяти для структуры Point. В следующем примере показан код, которым можно заменить последнюю инструкцию из предыдущего примера.

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

Идентификатор ошибки: BC30068

Исправление этой ошибки

  • Если оператор присваивает значение выражению, то замените выражение простой записываемой переменной, свойством или элементом массива.

  • Если инструкция делает косвенный доступ через тип "значение" (обычно структуры), то создайте переменную для хранения типа "значение".

  • Присвойте переменной подходящую структуру (или другой тип "значение").

  • Используйте переменную для доступа к свойству для присвоения ей значения.

См. также

Задачи

Устранение неполадок в процедурах

Основные понятия

Операторы и выражения в Visual Basic

Операторы присваивания