当我在数学运算中加上"="符号时发生了什么?

Fre*_*nöw 2 vb.net math syntax

我正在迅速从其他东西复制代码.经过测试和调试,我一直得到非常奇怪的结果.在再次比较代码之后,我意识到我=在我的等式中添加了一个额外的内容:

Dim lowerLeft As Integer = x = +y * terrainWidth
Run Code Online (Sandbox Code Playgroud)

与此相反:

Dim lowerLeft As Integer = x + y * terrainWidth
Run Code Online (Sandbox Code Playgroud)

这到底是做什么的?

Kon*_*lph 7

如果你有Option Strict On(你应该),这将无法编译.

甲=表达式内是比较运算符.结果是一个Boolean.在您的情况下,这意味着表达式相当于:

Dim lowerLeft As Integer

If x = +y * terrainWidth Then
    lowerLeft = True ' Converted to 1
Else
    lowerLeft = False ' Converted to 0
End If
Run Code Online (Sandbox Code Playgroud)

Option Strict On 正确地禁止这种隐含的转换.

  • @Dlamk默认情况下不启用.众神只知道为什么.默认情况下决定不启用它是一个巨大的错误.微软搞砸了.重要时刻. (4认同)