BC30068:表达式是一个值,因此不能作为赋值目标

语句尝试为表达式赋值。 只能在运行时为可写变量、属性或数组元素赋值。 下面的示例演示此错误是如何发生的。

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.

类似的例子可以应用于属性和数组元素。

间接访问。 通过值类型间接访问也会产生此错误。 考虑以下代码示例,此示例尝试通过 Location 间接访问 Point,以此来设置其值。

' 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.

前面示例的最后一条语句失败,因为它只为 Location 属性返回的 Point 结构创建临时分配。 结构是值类型,语句运行后不会保留临时结构。 通过为 Location 声明和使用变量来解决该问题,这为 Point 结构创建了更永久的分配。 下面的示例显示了可以替换前面示例的最后一条语句的代码。

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

错误 ID:BC30068

更正此错误

  • 如果语句为表达式赋值,则将表达式替换为单个可写变量、属性或数组元素。

  • 如果语句通过值类型(通常是结构)进行间接访问,则创建一个变量来保存值类型。

  • 将适当的结构(或其他值类型)分配给变量。

  • 使用该变量访问属性以为其分配一个值。

另请参阅