下面的C#程序做什么,我希望,这是输出“第一”,“第二”,“第三”。但是,当我将Main中的foo类型更改为动态时,会引发一个异常,如下所示:为什么将类型更改为动态会导致我的C#代码引发异常?
“不能隐式地将类型'MyProgram.Program'转换为'System.Collections.IEnumerable'。缺少强制转换?)”
为什么改变类型的动态断裂这样的代码?
谢谢!
using System;
namespace TestForEach
{
class Program
{
private int idx = -1;
public Program GetEnumerator() {
return this;
}
public string Current
{
get {
string[] arr = { "First", "Second", "Third" };
return arr[idx];
}
}
public Boolean MoveNext()
{
return ++idx < 3;
}
static void Main(string[] args)
{
Program foo = new Program();
foreach (var i in foo)
{
System.Console.WriteLine(i);
}
System.Console.ReadKey();
}
}
}
这是没有必要为一个类来实现'IEnumerable'为了一个实例在foreach循环使用。请参阅http://msdn.microsoft.com/en-us/library/dscyy5s0.aspx – drstevens 2011-11-22 19:57:34