Why is this an issue?

There are several compilations options available for Visual Basic source code and Option Strict defines compiler behavior for implicit data type conversions. Specifying Option Strict Off will allow:

This behavior can lead to unexpected runtime errors due to type mismatch or missing members.

Option Strict can be set in project properties or overridden in individual source files.

Noncompliant code example

Option Strict Off    ' Noncompliant

Public Class KnownType

    Public ReadOnly Property Name As String

End Class

Public Module MainMod

    Public Function DoSomething(Arg) As String  ' Type for "Arg" argument is not defined.
        Dim Item As KnownType = Arg             ' Implicit narrowing conversion doesn't enforce "Arg" to be of type "KnownType"
        Return Arg.Title                        ' "Title" might not exist in "Arg"
    End Function

End Module

Compliant solution

Option Strict On

Public Class KnownType

    Public ReadOnly Property Name As String

End Class

Public Module MainMod

    Public Function DoSomething(Arg As KnownType) As String
        Dim Item As KnownType = Arg
        Return Arg.Name
    End Function

End Module

Resources