2016-11-19 12 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

'उपज' और 'आईनेमेरेबल' का उपयोग करने के कारण। सुझाव दें कि आप 'var a = GetItems (fILEToolStripMenuItem) का प्रयास करें .सूची(); '। –

उत्तर

11

जब आप yield उपयोग कर रहे हैं, यह आस्थगित निष्पादन का मतलब है, ताकि आप अपने चर a की गणना करने की जरूरत है इस तरह:

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

तुम भी ToArray() उपयोग कर सकते हैं, जो कुछ भी, तो आप बस की जरूरत है अपने IEnumerable का आकलन करें।

संबंधित मुद्दे