在一个带有大量菜单项(按100的顺序)进行递归的asp.net菜单中,我可以写什么代码最多的代码来检查当前菜单项是否是项目列表中的最后一个。我想出了这个,但我希望改进这一点,只有当他们能够解释他们的代码如何优化和执行时,我才会将代码标记为答案。
if (childMenuItems.Parent.ChildItems.IndexOf(childMenuItem) == childMenuItems.Parent.ChildItems.Count -1)
childMenuItem是MenuItem
类中存在的Menu
的实例
答案 0 :(得分:1)
if (childMenuItems.Parent.ChildItems[childMenuItems.Parent.ChildItems.Count-1] == childMenuItem)
在我看来,这是优化的,因为你正在做一个廉价的直接数组索引而不是IndexOf
。 IndexOf
代价很高,因为它从列表的开头开始,并且相等性将每个元素与childMenuItem
进行比较。
在这个解决方案中,只有一个相等检查是最昂贵的部分。
更新此解决方案假定列表中始终存在元素