gpt4 book ai didi

c# - 不兼容的双重转换 - 编译器未检测到

转载 作者:行者123 更新时间:2023-11-30 13:38:40 25 4
gpt4 key购买 nike

在今晚测试一些代码时,我天真地尝试了双重转换来转换 ListIQueryable (注意:我知道 .AsQueryable() ,请阅读整个问题):

var data = (IQueryable<MyType>)(List<MyType>)Application["MyData"];

我没有考虑这是否有效,但我注意到 Visual Studio 中没有错误,而且我能够无错误地编译代码,所以我认为它会起作用。但是在我发布 web 应用程序并查看页面后,我收到了以下错误(如预期的那样):

Unable to cast object of type 'System.Collections.Generic.List`1[MyType]' to type 'System.Linq.IQueryable`1[MyType]'.

即使 Application["MyData"] 的类型在编译时不知道,难道不知道我正在尝试从 List<MyType> 进行转换吗?至 IQueryable<MyType> , 哪个无效?在这种情况下,为什么我没有收到编译器错误?

最佳答案

List<T> 类不是密封的,因此编译器不能确定来自 List<T> 的转换至 IQueryable<T>无效。

假设你这样定义一个子类

class QueryableList<T> : List<T>, IQueryable<T>
{
...
}

然后转换有效。

关于c# - 不兼容的双重转换 - 编译器未检测到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com