== Why is this an issue?

While it is technically correct to assign to parameters from within method bodies, doing so before the parameter value is read is likely a bug. Instead, initial values of parameters should be, if not treated as ``++readonly++`` then at least read before reassignment.

=== Noncompliant code example

[source,vbnet]
----
Module Module1
    Sub Foo(ByVal a As Integer)
        a = 42                  ' Noncompliant
    End Sub
End Module
----

=== Compliant solution

[source,vbnet]
----
Module Module1
    Sub Foo(ByVal a As Integer)
        Dim tmp = a
        tmp = 42
    End Sub
End Module
----

=== Exceptions

``++ByRef++`` parameters are ignored.

[source,vbnet]
----
Module Module1
    Sub Foo(ByRef a As Integer)
        a = 42                  ' Ignored; it is a ByRef parameter
    End Sub
End Module
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../highlighting.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
