今晩いくつかのコードをテストする際に、私は素朴にダブルキャストを試してaをに変換しListましたIQueryable(注:私は知ってい.AsQueryable()ます、質問全体を読んでください):
var data = (IQueryable<MyType>)(List<MyType>)Application["MyData"];
それが有効かどうかは考えていませんでしたが、Visual Studioにエラーがなく、エラーなしでコードをコンパイルできたので、うまくいくと思いました。しかし、Webアプリケーションを公開してページを表示した後、次のエラーが発生しました(予想どおり)。
タイプ'System.Collections.Generic.List`1[MyType]'のオブジェクトをタイプ'System.Linq.IQueryable`1[MyType]'にキャストできません。
Application["MyData"]コンパイル時にのタイプは不明ですが、からList<MyType>にキャストしようとしていることIQueryable<MyType>は不明ですが、これは無効です。この場合、コンパイラエラーが発生しないのはなぜですか?