[quote=引用 52 楼 hjkl950217 的回复:] 是不是IQueryable接口 是生成一个查询语句? 这里有点和SQL数据库的语句有点混.. 然后就是EF中会大量用到linq 我查看了一下,是IEnumerable类型..如果数据量大的话,会不会比较消耗内存?
是不是IQueryable接口 是生成一个查询语句? 这里有点和SQL数据库的语句有点混.. 然后就是EF中会大量用到linq 我查看了一下,是IEnumerable类型..如果数据量大的话,会不会比较消耗内存?
[quote=引用 4 楼 u014180504 的回复:] 能举一些实际的应用场景分析下哪个场景哪个最实用的,就是一些最佳实践可以吗,谢谢了
public static IEnumerable<long> AsLongModel() { return new long[] { }; }
我觉得这个问题还可以延伸到函数式编程的一些问题。 可以被 foreach 的迭代器,实际上是一个函数,一个函数返回一个 IEnumerable<T>,实际上是函数套函数。 [quote=引用 27 楼 zanfeng 的回复:] 表示从来不用2.0以上的语法特性。
[quote=引用 23 楼 u014180504 的回复:] [quote=引用 19 楼 closurer 的回复:] 从功能上看,没有什么好说的,因为 IEnumerable<T>、List<T>、IList<T> 都是可以互相转换的,无论你返回什么,都不会影响功能上的实现。 不同点是性能上的,假设你在函数里面已经得到了一个 IEnumerable<T>,因为受返回值的限制,执行了 ToList() 方法,这就执行了一次循环,假设这个函数的调用者根本不需要 List<T> 对象,只需要一个迭代器,于是他执行了 List<T> 的迭代器,这就又执行了一次循环……
能返回List就不要返回IList:如果后面有方法需要IList可以直接传;如果后面需要用到List的属性就能直接用 如果返回的是IList:后面有方法需要List,你得想想我能不能转,或者回去改;如果需要用到List的属性,还得回去改 综上考虑返回范围更广的类型好处多多
如果你留意 .net 的类库,会发现很少有方法返回 List<T> 或 IList<T> 的,但是不知道为什么很多 .net 的程序员喜欢这么做。 可能因为 List<T> 的功能实在太强大了吧。 我认为返回 T[] 或 IEnumerable<T> 会使你的函数的意思更加明确。
[quote=引用 15 楼 hanjun0612 的回复:] [quote=引用 10 楼 u014180504 的回复:] 那在IEnumerable<T>和Ilist<T>两者之间该如何恰当应用?
62,046
社区成员
669,049
社区内容
加载中
.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。
希望和大家一起共同营造一个活跃、友好的社区氛围。
试试用AI创作助手写篇文章吧