Dot-Net
在循環中聲明的變數在循環的每次迭代中都保持值
我無法確定這是錯誤還是功能
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= ""然後字元串不會保持它的值——這就是我最初期望函式執行的方式。
這是編譯器的故意行為嗎?
“按設計破碎”
http://msdn.microsoft.com/en-us/library/1t0wsc67.aspx
注意 即使變數的範圍僅限於塊,它的生命週期仍然是整個過程的生命週期。如果在過程中多次輸入塊,則每個塊變數都保留其先前的值。為了避免在這種情況下出現意外結果,明智的做法是在塊的開頭初始化塊變數。
這裡的“塊”是 FOR 循環的主體,並且您正在輸入一個 pr。循環的迭代。因此 strTest 將保留在第一次迭代中設置的值(“測試值”)用於下一次迭代(1、2、3、4)。