我是C#
工作的VB.net
人。我习惯这样做
lblErrorMsg.Text = txtErrorMsg.Value = vDataRow.Item("error_msg")
但它在VB.Net
中不起作用。它设置
lblErrorMsg.Text = "False"
和txtErrorMsg.Value = ""
而不是vDataRow.Item("error_msg")
的实际值。
这里发生了什么?
答案 0 :(得分:2)
在VB.NET中没有用,但我也不喜欢它在C#中。在VB中,=
运算符有两个不同的用途:
因此,您要将比较结果(Boolean
)分配给String
变量。
所以你必须使用这种可读的方法:
txtErrorMsg.Value = vDataRow.Item("error_msg") ' doesn't compile with Option Strict On (see below)
lblErrorMsg.Text = txtErrorMsg.Value
但另一件事更重要的是,您应该始终将Option Strict
设置为On
,特别是如果您已经习惯了它,因为您使用的是C#。您已将其设置为Off
,因为vDataRow.Item("error_msg")
返回Object
而非String
,甚至您的比较分配也会分配Boolean
,而不会导致编译错误。请改用:
txtErrorMsg.Value = vDataRow.Field(Of String)("error_msg")
答案 1 :(得分:0)
在VB.NET中将r值中的单个等号视为比较。因此,不可能在VB中链接赋值