【问题标题】:constructor do not enter a function C#构造函数不输入函数C#
【发布时间】:2017-04-03 06:16:52
【问题描述】:

我有代码。构造函数应该进入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;
                }

            }

        }
}

【问题讨论】:

  • 你把断点放在哪里了?
  • 因为使用了yieldIEnumerable。建议你试试var a = GetItems(fILEToolStripMenuItem).ToList();

标签: c# function call


【解决方案1】:

当你使用yield时,它意味着延迟执行,所以你需要枚举你的变量a,像这样:

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

你也可以使用ToArray(),无论如何,你只需要枚举你的IEnumerable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2011-04-03
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多