只是为了理解收集,我试图找到每个编号传入一个 集合的平方。我的代码是(当然,我可以用不同的方式实现,只是知道投射它,我做了一个虚拟实现)。申请行动代表
static void Main()
{
ICollection<int> Present = (ICollection<int>)
a.GetNumbers(new int[]{1,2,3});
foreach (int i in Present)
{
Console.WriteLine("{0}", i);
}
}
public IEnumerable<int> GetNumbers(int[] Numbers)
{
//first trial
ICollection<int> col =
Array.ForEach(Numbers, delegate { x => x * x; });
//second trial
ICollection<int> col = Array.ForEach(Numbers, (x => x * x));
return (IEnumerable<int>)col.GetEnumerator();
}
Array.ForEach在GetHumbers()中的两个h路径中有什么问题?
我收到“允许分配和呼叫增量”。错误。
乔恩,我改变了我的发言里面GetNumbers(..){回报(IEnumerable的)Array.ConvertAll(数字,(X => X * X))的GetEnumerator(。 ); } ....在Main()我也实现了.... IEnumerable Present =(IEnumerable )a.GetNumbers(new int [] {1,2,3})。GetEnumerator(); ....我收到了投射错误“无法投射'SZArrayEnumerator'类型的对象来键入'System.Collections.Generic.IEnumerable'1 [System.Int32]'。” –
Kalai
2009-10-22 14:36:54
您的方法被声明为返回IEnumerable而不是IEnumerator 不要调用GetEnumerator()。你的主要方法也是如此。你为什么要调用GetEnumerator()? –
2009-10-22 14:53:26