加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

了解任务/比较vb.net

发布时间:2020-12-17 07:12:19 所属栏目:百科 来源:网络整理
导读:这是我第一次使用Stack Overflow,我试图理解在这段代码的最后一行中’=’的含义: Dim label As Label = Me.labels.Item(String.Concat(New Object() { movimiento.Sector1.ID,"-",movimiento.X1,movimiento.Y1 }))Dim dictionary As Dictionary(Of Label,In
这是我第一次使用Stack Overflow,我试图理解在这段代码的最后一行中’=’的含义:

Dim label As Label = Me.labels.Item(String.Concat(New Object() { movimiento.Sector1.ID,"-",movimiento.X1,movimiento.Y1 }))
Dim dictionary As Dictionary(Of Label,Integer)
Dim label3 As Label
dictionary = Me.demandas2.Item(label3 = label) = (dictionary.Item(label3) - 1)

欢迎任何形式的帮助,谢谢!

解决方法

等号(=)用于VB.NET中两个完全不同的运算符.它用作赋值运算符以及相等测试运算符.角色评估的运算符取决于上下文.所以,例如,在这个例子中:

Dim x As Integer = 1
Dim y As Integer = 2
Dim z As Integer = x = y

您可能会认为,与其他语言(如C#)一样,执行该代码后,x,y和z都等于2.但是,VB将第二个等号视为等式测试运算符.因此,实际上,它正在这样做:

If x = y Then
    z = True
Else
    z = False
End If

但是,您会注意到我们正在尝试为整数变量分配一个布尔值.如果您有Option Strict On(如您所愿),则不允许您这样做.如果这真的是你想要做的,那么它会迫使你把它转换成一个整数,这会让它更明显:

z = CInt(x = y)

然而,它仍然令人困惑,因此通常情况下,这种事情在VB.NET中是不鼓励的.所以,我怀疑如果打开Option Strict,你发布的代码甚至都不会编译.但是,这正是它实际上要做的事情:

Dim temp1 As Boolean = (label3 = label) ' Evaluates to False
Dim temp2 As Boolean = (Me.demandas2.Item(temp1) = (dictionary.Item(label3) - 1)) ' Likely evaluates to False
dictionary = temp2 ' Couldn't possibly be a valid assignment

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读