2016-11-19 65 views
6

我有代碼。構造函數應該輸入GetItems函數,但是當我放置斷點時,它不會停止。構造函數不要輸入函數C#

是什麼問題?

namespace Storehouse { 
    public partial class MainForm : Form { 
     public MainForm() { 
      InitializeComponent(); 
      var a = GetItems(fILEToolStripMenuItem); 

     } 

     public IEnumerable<ToolStripMenuItem> GetItems(ToolStripMenuItem item) { 
      foreach (ToolStripMenuItem dropDownItem in item.DropDownItems) { 
       if (dropDownItem.HasDropDownItems) { 
        foreach (ToolStripMenuItem subItem in GetItems(dropDownItem)) { 
         yield return subItem; 
        } 
        yield return dropDownItem; 
       } 

      } 

     } 
} 
+0

你在哪裏放置中斷點? – Rahul

+5

由於使用了「yield」和「IEnumerable」。建議您嘗試'var a = GetItems(fILEToolStripMenuItem).ToList();'。 –

回答

11

當你使用yield,這意味着延遲執行,所以你需要列舉您的變量a,像這樣:

var a = GetItems(fILEToolStripMenuItem).ToList(); 

您還可以使用ToArray(),不管,你只需列舉您的IEnumerable