Арифметическая операция, которую вы выполняете, суммирует значение Byte
в значение Byte
.
Результат суммы затем присваивается типу переменной Long
.
Назначение происходит после того, как операция была выполнена.
Так как вы суммируете от myBytes1(1)
до value_array(1)
:
Dim sum As Int64 = value_array(1) + myBytes1(1)
и value_array
относятся к типу Byte
, значение суммы превышает то, что может содержать Byte.MaxValue = 255
.
Отсюда OverflowException
.
Чтобы избежать исключения, приведите или преобразуйте суммируемое вами значение в тип назначения.
Поскольку это расширяющее преобразование , переполнение не может произойти:
Сумма Long
в Long
:
Dim sum As Long = CType(value_array(1), Long) + CType(myBytes1(1), Long)
или сумма от Byte
до Long
:
Dim sum As Long = CLng(value_array(1)) + myBytes1(1)
но не:
Dim sum As Int64 = CLng(value_array(1) + myBytes1(1))
Здесь преобразование выполняется после арифметическая операция уже переполнена Byte.MaxValue
.