C# 最短优化,执行代码检查当前菜单项是否在列表中的最后一个
在asp.net菜单中,使用菜单项加载进行递归加载(按100的顺序),我可以编写什么样的代码来检查当前菜单项是否是项目列表中的最后一个。我提出了这一点,但我想改进这一点,我会标记一个代码作为答案,只有当他们能够解释他们的代码是如何优化和执行的C# 最短优化,执行代码检查当前菜单项是否在列表中的最后一个,c#,asp.net,performance,optimization,time-complexity,C#,Asp.net,Performance,Optimization,Time Complexity,在asp.net菜单中,使用菜单项加载进行递归加载(按100的顺序),我可以编写什么样的代码来检查当前菜单项是否是项目列表中的最后一个。我提出了这一点,但我想改进这一点,我会标记一个代码作为答案,只有当他们能够解释他们的代码是如何优化和执行的 if (childMenuItems.Parent.ChildItems.IndexOf(childMenuItem) == childMenuItems.Parent.ChildItems.Count -1) 投入 childMenuItem是Menu
if (childMenuItems.Parent.ChildItems.IndexOf(childMenuItem) == childMenuItems.Parent.ChildItems.Count -1)
投入
childMenuItem是MenuItem
的实例,它出现在菜单
类中
if (childMenuItems.Parent.ChildItems[childMenuItems.Parent.ChildItems.Count-1] == childMenuItem)
在我看来,这是优化了的,因为你正在做一个简单的数组索引,这比做IndexOf
便宜IndexOf
代价高昂,因为它从列表的开头开始,并且相等性将每个元素与childMenuItem
进行比较
在这个解决方案中,只有一个等式检查,这是最昂贵的部分
更新此解决方案假定列表中始终存在元素@sll
IndexOf(childMenuItem)
很抱歉将其复数化,并且列表中包含元素。标记为答案