Tag: .net可数

为什么Cast ()不能在IEnumerable 上工作?

可能重复: Enumerable.Cast 扩展方法无法从int转换为long,为什么? 令人费解的Enumerable.Cast InvalidCastException 将IEnumerable 转换为IEnumerable ? 我正在尝试将整数数组转换为双精度数组(因此我可以将它传递给一个带有双精度数组的函数)。 最明显的解决方案(至少对我而言)是对IEnumerable使用Cast扩展函数,但它给了我一个InvalidCastException,我不明白为什么。 我的解决方法是使用Select,但我认为Cast看起来更整洁。 有人能告诉我为什么Cast方法不起作用? 希望下面的代码说明我的问题: namespace ConsoleApplication1 { using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var intArray = new[] { 1, 2, 3, 4 }; PrintEnumerable(intArray, “intArray: “); var doubleArrayWorks = intArray.Select(x => (double)x).ToArray(); PrintEnumerable(doubleArrayWorks, “doubleArrayWorks: “); // Why does this […]

IEnumerable foreach,为最后一个元素做一些不同的事情

我有一个IEnumerable 。 我想为集合中的每个项目做一件事,除了最后一项,我想做其他事情。 我怎么能整齐地编码呢? 在伪代码中 foreach (var item in collection) { if ( final ) { g(item) } else { f(item) } } 所以如果我的IEnumerable是Enumerable.Range(1,4)我会做f(1)f(2)f(3)g(4)。 NB。 如果我的IEnumerable恰好是长度1,我想要g(1)。 我的IEnumerable碰巧有点蹩脚,使Count()像整个事情一样昂贵。