2016-11-19 15 views
6

Mam kod. konstruktor powinien wprowadzić funkcję GetItems, ale kiedy umieszczam punkt przerwania, po prostu się nie zatrzymuje.Konstruktor nie wchodzi w funkcję C#

na czym polega problem?

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

gdzie umieściłeś punkt przerwania? – Rahul

+5

Z powodu użycia 'yield' i' IEnumerable'. Zaproponuj wypróbowanie 'var a = GetItems (fILEToolStripMenuItem) .ToList();'. –

Odpowiedz

11

Kiedy używasz yield, oznacza to wykonanie odroczony, więc trzeba wyliczyć zmienną a, tak:

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

Można również użyć ToArray(), cokolwiek, wystarczy wylicz swoją IEnumerable.