Подтвердить что ты не робот

Что делает Option Strict и Option Explicit?

Я видел этот пост:

Typos... Просто используйте опцию строгий и явный, пожалуйста.. во время одного проекта разработки программного обеспечения, в котором я работал консультантом, они получали нелепые ошибки во всем мире... оказалось, что разработчик не мог произнести заклинание и объявлял переменные с неправильной орфографией.. нет большой сделки, пока вы не воспользуетесь правильной орфографией, когда вы присваиваете ей значение... и у вас был вариант с явным отключением. Ой им... "

Что такое Option Strict и Option Explicit? Я искал его, но не могу понять (потому что в основном это Visual Basic, я занимаюсь PHP).

4b9b3361

Ответ 1

Option Explicit означает, что все переменные должны быть объявлены. Смотрите здесь Без этого вы можете случайно объявить новую переменную, просто неправильно написав имя другой переменной. Это одна из тех вещей, которая вызывает много горя, когда вы пытаетесь отлаживать программы VB и выяснять, почему ваша программа не работает должным образом. На мой взгляд, это даже не должно быть вариантом - оно всегда должно быть включено.

Option Strict "ограничивает неявные преобразования типов данных только расширяющимися преобразованиями". Смотрите здесь Если эта опция включена, вы не можете случайно преобразовать один тип данных в другой, что является менее точным (например, из Integer в Byte). Опять же, опция, которая должна быть включена по умолчанию.

Ответ 2

TL; DR

Option Strict и Option Explicit помогут вам выявить потенциальные и фактические ошибки в время разработки, а не компиляцию кода и потерпеть неудачу в время выполнения. Вы должны переключаться как On

Опция Strict и Option Explicit отключены по умолчанию. Чтобы включить их:

Вариант Строгий Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict. Установите его на On.

Опция Явная Tools -> Options -> Editor -> Require Variable Declaration. отметьте его.

Опция Явная

С Option Explicit Off вам не нужно объявлять (Dim) переменную перед ее использованием:

a = 123 'a is automatically declared as an Integer

Это становится опасным, когда вы объявляете переменную в одном месте и думаете, что используете ее позже, но неправильно введите ее:

Dim counter As Integer = 0
'some lines later...
countr = 55 'This creates a new variable called countr 

Или, что еще хуже, вы присваиваете значение переменной, которая, по вашему мнению, находится в области видимости, но это не так, и вы в конечном итоге объявляете новую переменную с тем же именем, но с разной областью.

С большим количеством кода или длинных методов их легко пропустить, вы должны всегда включать его, чтобы предотвратить такие проблемы.

Параметр Строгий

С Option Strict Off вы можете неявно преобразовать тип данных в суживающийся тип без ошибок

Dim d As Double = 999.99
Dim s As Single = d 'No error with Option Strict Off

В этих случаях опция Strict служит предупреждением разработчику, чтобы убедиться, что двойное значение никогда не должно превышать Single.MaxValue

Вы также можете назначить Enum на неправильное значение без ошибок. Ниже приведен реальный пример:

enter image description here

Переменная должна быть установлена ​​на EOpticalCalStates.FAILED (24), на самом деле она устанавливает для состояния значение 4, которое эквивалентно EOpticalCalStates.ALI_HOR

Нечто похожее на это не так просто.

Поэтому вы всегда должны иметь параметр Strict по умолчанию. Этот параметр должен был быть установлен по умолчанию, но Microsoft решила отказаться от него, чтобы увеличить обратную совместимость (что с ретроспективностью было ошибкой IMO).

Ответ 3

Найти подробности здесь: http://support.microsoft.com/kb/311329

Оператор Option Explicit

По по умолчанию, Visual Basic.NET или Компилятор Visual Basic обеспечивает объявление явной переменной, которое требует, чтобы вы объявляли каждый переменную, прежде чем использовать ее. Изменить это поведение по умолчанию, см. Изменение раздел "Значения по умолчанию проекта".

Оператор Option Strict

По по умолчанию, Visual Basic.NET или Компилятор Visual Basic не обеспечивает строгий ввод данных. Чтобы изменить это по умолчанию, см. раздел Изменение Раздел "Значения проекта по умолчанию".