投稿者 YuO  (社会人) 投稿日時 2016/12/2 16:18:19
まず,Directory.EnumerateDirectoriessはIEnumerable(Of String)を,
Directory.GetDirectoriesはString()を,それぞれ戻り値として返します。

その上で,①と③,②と④は型が同じなので機能します。
また,①と④はString()がIEnuemrable(Of String)を実装しているかのように振る舞うため,機能します。

しかし,②と③は,IEnumerable(Of String)はString()ではないので,そもそも正しくありません。
キャスト失敗の例外がCatchに捕らえられている,というのが実際かと思います。
# Catch節をCatch e As UnauthorizedAccessExceptionにすると例外に気付くはず。


このサイトのスタンスには反するのですが,Option StrictはOnにしてプログラムを行う事をお勧めします。
# Option Strict Onならばそもそもエラーになったはず。