non riusciva a capire se questo è un insetto o una caratteristicavariabile dichiarata all'interno di un ciclo conserva valore attraverso ogni iterazione del ciclo
For i = 0 To 4
Dim strTest As String
If i = 0 Then
strTest = "test value"
End If
Console.WriteLine(strTest)
Next
ho pensato che dichiarando la stringa all'interno del ciclo, esso wouldn 'mantenere il suo valore ma dopo aver eseguito questo codice la console ha 5 righe di "valore di test". Se invece mi dichiaro strTest come:
Dim strTest As String= ""
Poi la stringa non mantiene a valore che è come mi sarei aspettato la funzione di operare in primo luogo.
È questo comportamento intenzionale del compilatore?
Se ritieni che questo è un comportamento imprevisto, sono pienamente d'accordo, ma si può sostenere che si tratta di un'opportunità per micro-ottimizzare le prestazioni. L'istruzione DIM in realtà assegna solo memoria qui, quindi dato un compilatore abbastanza buono, è praticamente gratuito (un no-op). Se implicasse un'inizializzazione, costerebbe almeno un op pr. iterazione. –