Option Strict On prevents three things from happening:
1. Implicit Narrowing Conversion Errors
It prevents you from assigning to a variable that has less precision or smaller capacity (a narrowing conversion) without an explicit cast. Doing so would result in data loss.
Dim d As Double = 123.4 Dim s As Single = d 'This line does not compile with Option Strict On
2. Late Binding Calls
Late binding is not allowed. This is to prevent typos that would compile, but fail at runtime
Dim obj As New Object obj.Foo 'This line does not compile with Option Strict On
3. Implicit Object Type Errors
This prevents variable being inferred as an Object when in fact they should have been declared as a type
Dim something = Nothing. 'This line does not compile with Option Strict On
Unless you need to do late binding, you should always have
Option Strict On as it will cause the mentioned errors to generate compile time errors instead of runtime exceptions.
If you have to do late binding, you can either
Option Strict Offat the top of the code file (this is the preferred method as it reduces the likelihood of a typos in other files), or
Project Properties > Compile Tab > Warning Configuration)