2010-11-10 64 views
2

下面的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(); 
    } 
} 
} 

回答

0

我很驚訝它甚至編譯。 Program類需要實現IEnumerable

+1

這是沒有必要爲一個類來實現'IEnumerable'爲了一個實例在foreach循環使用。請參閱http://msdn.microsoft.com/en-us/library/dscyy5s0.aspx – drstevens 2011-11-22 19:57:34

1
相關問題