tôi không thể tìm ra nếu điều này là một lỗi hoặc một tính năngbiến khai báo bên trong một vòng lặp duy trì giá trị thông qua mỗi lần lặp của vòng lặp
For i = 0 To 4
Dim strTest As String
If i = 0 Then
strTest = "test value"
End If
Console.WriteLine(strTest)
Next
Tôi nghĩ rằng bằng cách tuyên bố chuỗi bên trong vòng lặp, nó wouldn 't duy trì giá trị của nó nhưng sau khi chạy mã này giao diện điều khiển có 5 dòng "giá trị thử nghiệm". Nếu thay vào đó, tôi tuyên bố strTest như:
Dim strTest As String= ""
Sau đó, chuỗi không duy trì giá trị - đó là cách tôi dự kiến hoạt động sẽ hoạt động ngay từ đầu.
Hành vi có chủ ý này của trình biên dịch?
Nếu bạn cảm thấy rằng đây là hành vi bất ngờ, tôi hoàn toàn đồng ý, nhưng người ta có thể cho rằng đó là một cơ hội để vi tối ưu hóa cho hiệu suất. Câu lệnh DIM thực sự chỉ phân bổ bộ nhớ ở đây, do đó, cho một trình biên dịch đủ tốt, nó thực tế miễn phí (một no-op). Nếu nó ngụ ý một khởi tạo, nó sẽ chi phí ít nhất một op pr. lặp lại. –