Конечно, принятый ответ правильный, но он не объясняет, почему или когда может иметь значение явная инициализация.
VB.NET обычно присваивает значение по умолчанию (0
или Nothing
) при объявлении переменной, но в некоторых случаях это не так.
Рассмотрим это простое консольное приложение:
Sub Main()
For i As Integer = 1 To 5
Dim number As Integer
If i = 3 Then number = 3
Console.Write(number)
Next
End Sub
Как выглядит вывод? Можно ожидать, что number
будет установлен на 0
для каждой итерации цикла, и он будет установлен на 3
только на третьей итерации цикла. Тогда для четвертой и пятой итерации это будет снова 0
. Итак, вывод 00300
, верно? Не так. Выход этого кода на самом деле
00333
Это потому, что в VB.NET время жизни переменной, объявленной в цикле, предназначено для цикла целом , а не для одной итерации цикла (не то, что вы ожидаете, а?). Но если вы явно установите значение number
в 0
при его объявлении, например,
Dim number As Integer = 0
тогда вывод выглядит как
00300
Так что обычно безопасно, если предположить, что VB.NET установит значение по умолчанию, когда вы Dim
переменную, но всегда безопаснее явно установить ее на 0
или Nothing
, чтобы получить ожидаемое поведение.