我想创建一个跳过第一项的foreach。我在别处看到最简单的方法是使用myCollection.Skip(1),但我有一个问题:关于.Skip()的MSDN文档描述了它“绕过序列中指定数量的元素,然后返回剩余的元素”。这是否意味着调用foreach(objectiinmyCollection.Skip(1)){...}程序是否必须在每次foreach迭代时执行.Skip(1)?还是foreach(有点像switch)不需要对数组进行多次计算?创建一个虚拟var_dummy=myCollection.Skip(1)并对其进行迭代是否会更有效? 最佳答案
我想创建一个跳过第一项的foreach。我在别处看到最简单的方法是使用myCollection.Skip(1),但我有一个问题:关于.Skip()的MSDN文档描述了它“绕过序列中指定数量的元素,然后返回剩余的元素”。这是否意味着调用foreach(objectiinmyCollection.Skip(1)){...}程序是否必须在每次foreach迭代时执行.Skip(1)?还是foreach(有点像switch)不需要对数组进行多次计算?创建一个虚拟var_dummy=myCollection.Skip(1)并对其进行迭代是否会更有效? 最佳答案
我有一段代码是这样的:if(state!="Ok"){Debug.WriteLine($"Erroroccured:{state},{moreInfo}");}如果我进行发布构建,编译器会优化它吗?还是评估会停留并因此花费一些处理时间? 最佳答案 是的,至少对于Debug调用是这样。我在这里看不到JIT编译器是否也删除了if的求值,但我猜是这样,因为等式没有任何副作用。但是,您最好通过调用Debug.WriteLineIf来保证它的安全,这不依赖于JIT编译器来删除评估。为了完整性,编译器删除了Debug.WriteLine。发布版
我有一段代码是这样的:if(state!="Ok"){Debug.WriteLine($"Erroroccured:{state},{moreInfo}");}如果我进行发布构建,编译器会优化它吗?还是评估会停留并因此花费一些处理时间? 最佳答案 是的,至少对于Debug调用是这样。我在这里看不到JIT编译器是否也删除了if的求值,但我猜是这样,因为等式没有任何副作用。但是,您最好通过调用Debug.WriteLineIf来保证它的安全,这不依赖于JIT编译器来删除评估。为了完整性,编译器删除了Debug.WriteLine。发布版
我在C#中有这两段代码:首先classProgram{staticStackS=newStack();staticintFoo(intn){if(n==0)return0;S.Push(0);S.Push(1);...S.Push(999);returnFoo(n-1);}}第二classProgram{staticStackS=newStack();staticintFoo(intn){if(n==0)return0;S.Push(0);S.Push(1);...S.Push(999);returnFoo(n-1);}}他们都做同样的事情:创建堆栈(第一个示例在中通用,第二个示例在对
我在C#中有这两段代码:首先classProgram{staticStackS=newStack();staticintFoo(intn){if(n==0)return0;S.Push(0);S.Push(1);...S.Push(999);returnFoo(n-1);}}第二classProgram{staticStackS=newStack();staticintFoo(intn){if(n==0)return0;S.Push(0);S.Push(1);...S.Push(999);returnFoo(n-1);}}他们都做同样的事情:创建堆栈(第一个示例在中通用,第二个示例在对
哪个代码片段会提供更好的性能?以下代码段是用C#编写的。1.for(inttempCount=0;tempCountforeach(objectrowinlist){if(row.value==value){//Somecoding}} 最佳答案 嗯,这部分取决于list的确切类型.它还将取决于您使用的确切CLR。它是否以任何方式重要将取决于您是否在循环中做任何实际工作。在几乎所有情况下,性能差异并不显着,但可读性差异有利于foreach循环。我个人也会使用LINQ来避免“if”:foreach(variteminlist.Wh
哪个代码片段会提供更好的性能?以下代码段是用C#编写的。1.for(inttempCount=0;tempCountforeach(objectrowinlist){if(row.value==value){//Somecoding}} 最佳答案 嗯,这部分取决于list的确切类型.它还将取决于您使用的确切CLR。它是否以任何方式重要将取决于您是否在循环中做任何实际工作。在几乎所有情况下,性能差异并不显着,但可读性差异有利于foreach循环。我个人也会使用LINQ来避免“if”:foreach(variteminlist.Wh
我有一个性能关键的二元决策树,我想将这个问题集中在一行代码上。下面是二叉树迭代器的代码以及对其运行性能分析的结果。publicScTreeNodeGetNodeForState(introotIndex,float[]inputs){0.2%ScTreeNodenode=RootNodes[rootIndex].TreeNode;24.6%while(node.BranchData!=null){0.2%BranchNodeDatab=node.BranchData;0.5%node=b.Child2;12.8%if(inputs[b.SplitInputIndex]BranchDat
我有一个性能关键的二元决策树,我想将这个问题集中在一行代码上。下面是二叉树迭代器的代码以及对其运行性能分析的结果。publicScTreeNodeGetNodeForState(introotIndex,float[]inputs){0.2%ScTreeNodenode=RootNodes[rootIndex].TreeNode;24.6%while(node.BranchData!=null){0.2%BranchNodeDatab=node.BranchData;0.5%node=b.Child2;12.8%if(inputs[b.SplitInputIndex]BranchDat