我很快就從別的東西上覆制代碼。經過測試和調試,我不斷得到非常奇怪的結果。再對比代碼後,我意識到,我已經將我的方程的一個額外=
內:當我在數學運算中添加「=」符號時發生了什麼?
Dim lowerLeft As Integer = x = +y * terrainWidth
與此相反:
Dim lowerLeft As Integer = x + y * terrainWidth
什麼這實際上在做什麼?
我很快就從別的東西上覆制代碼。經過測試和調試,我不斷得到非常奇怪的結果。再對比代碼後,我意識到,我已經將我的方程的一個額外=
內:當我在數學運算中添加「=」符號時發生了什麼?
Dim lowerLeft As Integer = x = +y * terrainWidth
與此相反:
Dim lowerLeft As Integer = x + y * terrainWidth
什麼這實際上在做什麼?
如果你有Option Strict On
(和你應該),這將不會編譯。
A =
裏面的表達式是比較運算符。其結果是Boolean
。在你的情況中,這意味着該表達式等價於:
Dim lowerLeft As Integer
If x = +y * terrainWidth Then
lowerLeft = True ' Converted to 1
Else
lowerLeft = False ' Converted to 0
End If
Option Strict On
正確地禁止這個隱式轉換。
運行它並看看。 – Oded 2012-08-03 13:06:49
切換選項嚴格打開 - 立即執行! – 2012-08-03 13:15:45
@Oded從技術上講,我做到了,這就是爲什麼我不斷得到「奇怪的結果」。這些是結果(左邊是奇怪的,右邊是預期的):http://i50.tinypic.com/206ynhc.png我現在知道這是因爲它將它們全部設置爲具有共享頂點與0(或一個循環中的1),否則; (對我來說,至少)並不直觀。 – FreeSnow 2012-08-03 13:36:33