在今晚测试一些代码时,我天真地尝试了双重转换以将 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"]
在编译时不知道 of 的类型,难道不知道我正在尝试从 to 强制List<MyType>
转换IQueryable<MyType>
,这是无效的吗?在这种情况下,为什么我不会收到编译器错误?