2012-08-03 38 views
2

我很快就從別的東西上覆制代碼。經過測試和調試,我不斷得到非常奇怪的結果。再對比代碼後,我意識到,我已經將我的方程的一個額外=內:當我在數學運算中添加「=」符號時發生了什麼?

Dim lowerLeft As Integer = x = +y * terrainWidth 

與此相反:

Dim lowerLeft As Integer = x + y * terrainWidth 

什麼這實際上在做什麼?

+0

運行它並看看。 – Oded 2012-08-03 13:06:49

+2

切換選項嚴格打開 - 立即執行! – 2012-08-03 13:15:45

+1

@Oded從技術上講,我做到了,這就是爲什麼我不斷得到「奇怪的結果」。這些是結果(左邊是奇怪的,右邊是預期的):http://i50.tinypic.com/206ynhc.png我現在知道這是因爲它將它們全部設置爲具有共享頂點與0(或一個循環中的1),否則; (對我來說,至少)並不直觀。 – FreeSnow 2012-08-03 13:36:33

回答

7

如果你有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正確地禁止這個隱式轉換。

+0

默認情況下,爲什麼不啓用Option Strict?它是不是默認'on'? – FreeSnow 2012-08-03 13:20:33

+4

@Dlamk默認情況下它不是。上帝只知道爲什麼。不作默認的決定是一個巨大的錯誤。微軟在這裏搞砸了。重要時刻。 – 2012-08-03 13:34:00

+0

好吧,我繼續進入我的設置,並默認將其設置爲'開'。感謝您的好回答:) – FreeSnow 2012-08-03 13:39:07

相關問題