レガシーアプリケーションを更新していて、項目の辞書(Guid、String)の別のプロジェクトからdllを読み込んで使用していました。DictionaryをIListに設定するとVB.Netでコンパイラエラーが発生しません
要件が変更され、ディクショナリを返すメソッドがIListを返すようになりました。
これは奇妙な動作です。インテリセンスはキャストエラーを投げているわけではなく、コンパイラもありません。ディクショナリをIListに設定しようとすると、実行時までエラーは発生しません。
例:コンパイラはこれをキャッチされていない理由として
Dim someDictionary As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
Dim someList As IList(Of Integer)
someDictionary = someList
任意のアイデア?
VB.Netは*型の安全性をチェックしないため、私はVBを強く型付けされた言語とは考えませんでした。 VBでは、コンパイルしようとする前にC#が叫んでしまう暗黙的なキャストを多く許可しています。 – IAbstract
@IAbstract:Option ExplicitとOption Strictを使用すると、VBはかなり厳密に型指定されています。 –
@Jon:私はOption Wrongであったと思います;) – IAbstract