单个中的多个赋值不起作用

时间:2017-05-24 09:32:03

标签: vb.net

我是C#工作的VB.net人。我习惯这样做

lblErrorMsg.Text = txtErrorMsg.Value = vDataRow.Item("error_msg")

但它在VB.Net中不起作用。它设置

lblErrorMsg.Text = "False"txtErrorMsg.Value = ""而不是vDataRow.Item("error_msg")的实际值。

这里发生了什么?

2 个答案:

答案 0 :(得分:2)

在VB.NET中没有用,但我也不喜欢它在C#中。在VB中,=运算符有两个不同的用途:

  1. assignment operator
  2. comparison operator(等于)
  3. 因此,您要将比较结果(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中链接赋值