2016-11-19 2 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を列挙する必要があるので、それは、遅延実行を意味します。あなたはまた、あなたは、単にする必要が何らかのToArray()を、使用することができます

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

IEnumerableを列挙してください。

関連する問題