构造函数不进入函数 C#
constructor do not enter a function C#
我有代码。构造函数应该进入 GetItems
函数,但是当我放置断点时,它根本不会停止。
有什么问题?
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;
}
}
}
}
当你使用yield时,它意味着延迟执行,所以你需要枚举你的变量a
,像这样:
var a = GetItems(fILEToolStripMenuItem).ToList();
你也可以使用ToArray()
,无论如何,你只需要枚举你的IEnumerable
。
我有代码。构造函数应该进入 GetItems
函数,但是当我放置断点时,它根本不会停止。
有什么问题?
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;
}
}
}
}
当你使用yield时,它意味着延迟执行,所以你需要枚举你的变量a
,像这样:
var a = GetItems(fILEToolStripMenuItem).ToList();
你也可以使用ToArray()
,无论如何,你只需要枚举你的IEnumerable
。