Я работаю над устаревшим проектом Visual Basic (VB.NET) и включил Option Strict, который генерирует кучу ошибок из-за неявного преобразования.
Я пытаюсь устранить эти ошибки с минимальнымизменение в программе, т.е. явное преобразование в тот же тип, который VB неявно преобразовывал.
Одна из ошибок:
BC30512 Опция Strict On запрещает неявное преобразование из 'String' в 'Double».
Строка кода - это оператор If, проверяющий равенство с помощью оператора Equals.Левый операнд - это Long, а правый операнд - строка.
В конечном итоге, чтобы «исправить» этот пример, один явно опровергнет один из операндов того же типа, что и другой, но какой операнд и какой типнаиболее близко совпадает с тем, что делает VB с Option Strict Off?
На основании ошибки он кажется правильным операндом.В общем, как работает VB, какой операнд выполняет преобразование типа?
Почему он пытается преобразовать строку в Double вместо Long, чтобы соответствовать левому операнду?Левый операнд неявно преобразуется из Long в Double?
Dim l As Long = 123
Dim s As String = "123"
If l = s Then
' Do Something
Else
' Do the other thing
End If