2016-11-19 2 views
6

Ich habe Code. Der Konstruktor sollte die GetItems Funktion eingeben, aber wenn ich Haltepunkt platziere, hört es einfach nicht auf.Konstruktor geben Sie keine Funktion C#

Was ist das 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

Wo haben Sie den Haltepunkt platziert? – Rahul

+5

Wegen der Verwendung von 'yield' und' IEnumerable'. Schlage vor, du versuchst 'var a = GetItems (fILEToolStripMenuItem) .ToList();'. –

Antwort

11

Wenn Sie yield verwenden, bedeutet dies, verzögerte Ausführung, so müssen Sie Ihre Variable a, wie diese aufzuzählen:

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

Sie auch ToArray() verwenden können, was auch immer, müssen Sie einfach Zählen Sie Ihre IEnumerable auf.

Verwandte Themen