Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最短优化,执行代码检查当前菜单项是否在列表中的最后一个_C#_Asp.net_Performance_Optimization_Time Complexity - Fatal编程技术网

C# 最短优化,执行代码检查当前菜单项是否在列表中的最后一个

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

在asp.net菜单中,使用菜单项加载进行递归加载(按100的顺序),我可以编写什么样的代码来检查当前菜单项是否是项目列表中的最后一个。我提出了这一点,但我想改进这一点,我会标记一个代码作为答案,只有当他们能够解释他们的代码是如何优化和执行的

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)
很抱歉将其复数化,并且列表中包含元素。标记为答案