Option Strict можно использовать без Option Infer, но Option Infer не следует использовать без Option Strict, поскольку это может привести к разнице в результирующем IL.
Рассмотрим эту строку кода:
txtBox.Text = If(str="", Nothing, CDate(str))
с опцией Strict Off и Option Infer Off, что эквивалентно:
txtBox.Text = CStr(If(str="", Nothing, CType(CDate(str), Object)))
Если str = "", то для txtBox.Text задано значение Nothing / пустая строка.
При включенном параметре Infer, но Option Strict Off, который становится:
txtBox.Text = Cstr(If(str="", CDate(Nothing), CType(CDate(str), Object)))
И CDate (ничего) = Date.MinValue и т. Д. TxtBox.Text = "01/01/0001"
Option Strict может заставить ваш код не компилироваться, Option Infer может изменить его значение. Это не значит, что Infer не может быть хорошей вещью, в общем-то, так и есть, но есть несколько предостережений, о которых вам нужно знать.
Исходный код может быть записан как:
txtBox.Text = Cstr(If(str="", Nothing, CDate(str)))
В этом случае Option Strict не спасет вас, если вы включите Option. Infer On, но в кодовой базе без Strict более вероятна оригинальная версия.