我不能工作了,如果這是一個錯誤或功能通過循環的每個迭代保值
For i = 0 To 4
Dim strTest As String
If i = 0 Then
strTest = "test value"
End If
Console.WriteLine(strTest)
Next
我認爲通過聲明循環內的字符串,它止跌沒有保持它的價值,但在運行這個代碼後,控制檯有5行「測試值」。相反,如果我宣佈strTest,如:
Dim strTest As String= ""
然後字符串不保持其價值 - 這是多麼我本來期望的功能,在第一時間進行操作。
這是編譯器的這種故意行爲嗎?
如果你覺得這是意外的行爲,我完全同意,但可以認爲它是微優化性能的機會。 DIM語句實際上只在這裏分配內存,所以給定一個足夠好的編譯器,它實際上是免費的(一個無操作)。如果它意味着一個初始化,它將至少花費一個操作。迭代。 –