私はそれを回避してきたので、これは決して私にとって深刻な問題ではありませんが、私はその違いと、一方がコンパイルされ、他方がコンパイルされない理由についてもっと知りたがっています。次の例を見てください。
これは構築します。
Sub Foo()
Dim someL as IList(Of Integer) = New List(Of Integer)
Bar(someL)
End Sub
Sub Bar(ByRef argSomeL as IList(Of Integer))
'do stuff
End Sub
bar の引数は IList の引数であることに注意してください。SomeL は実際の List(Of Int) です。以下はコンパイルされません。
Sub Foo()
Dim someL as New List(Of Integer)
Bar(someL)
End Sub
Sub Bar(ByRef argSomeL as IList(Of Integer))
'do stuff
End Sub
どちらも (Foo()) IList ではなく List の引数で Bar を呼び出しているのではないでしょうか?