请教高手foreach具体
我在用foreach的时候遇到过这样的问题:
我在一个WINFORM中加了个菜单,菜单的下拉列表里除了有ToolStripMenuItem,还有分隔线(ToolStripSeparator)
具体代码如下:
foreach (ToolStripMenuItem item0 in MainMenuStrip.Items)
{
foreach (ToolStripMenuItem item1 in item0.DropDownItems)
{
MessageBox.Show(item1.Text); //在迭代到ToolStripSeparator时会出错
}
}
我看了一下它们的继承关系,ToolStripSeparator派生于ToolStripItem,而 ToolStripMenuItem 派生于ToolStripDropDownItem,而ToolStripDropDownItem 派生于 ToolStripItem
,简单点说,ToolStripSeparator 和ToolStripMenuItem 都是派生于ToolStripItem
而item0.DropDownItems 就是一个ToolStripItemCollection(ToolStripItem的集合)
难道说 foreach (ToolStripMenuItem item1 in item0.DropDownItems)这里迭代的是item0.DropDownItems的数量
或者说foreach 里面迭代的次数是in 后面的集合里(DropDownItems)的数量,而不是集合(DropDownItems)中ToolStripMenuItem 的数量????????
这个让我觉得很奇怪,是微软故意设置成这样的还是有什么特别的原因,请高手告诉我.