Tag: for loop

为什么“以循环索引为猴子”不好?

史蒂夫麦康奈尔的一个清单项目是你不应该使用循环索引 (第16章,第25页, 循环索引 ,PDF格式)。 这是直觉上的,并且是我一直遵循的练习,除非我学会了如何在当天编程。 在最近的一次代码审查中,我发现这个尴尬的循环并立即将其标记为可疑。 for ( int i=0 ; i < this.MyControl.TabPages.Count ; i++ ) { this.MyControl.TabPages.Remove ( this.MyControl.TabPages[i] ); i–; } 它几乎是有趣的,因为它设法通过将索引保持为零来工作,直到删除所有TabPages。 这个循环可以写成 while(MyControl.TabPages.Count > 0) MyControl.TabPages.RemoveAt(0); 而且由于控制实际上与循环几乎同时写入,它甚至可以写成 MyControl.TabPages.Clear(); 从那以后,我一直受到代码审查问题的挑战,并发现我对错误实践的阐述并不像我所希望的那样强烈。 我说很难理解循环的流程,因此难以维护和调试,并且最终在代码的生命周期内更加昂贵。 是否更好地阐明了为什么这是不好的做法?

为什么foreach循环在某些情况下不起作用?

我正在使用foreach循环来处理要处理的数据列表(一旦处理就删除了所述数据 – 这是在锁内)。 此方法偶尔会导致ArgumentException。 抓住它会很昂贵,所以我试着追查这个问题,但我无法弄明白。 我已经切换到for循环,问题似乎已经消失了。 有人能解释发生了什么吗? 即使有exception消息,我也不太了解幕后发生了什么。 为什么for循环显然有效? 我是否设置了foreach循环错误或什么? 这几乎是我的循环设置方式: foreach (string data in new List(Foo.Requests)) { // Process the data. lock (Foo.Requests) { Foo.Requests.Remove(data); } } 和 for (int i = 0; i < Foo.Requests.Count; i++) { string data = Foo.Requests[i]; // Process the data. lock (Foo.Requests) { Foo.Requests.Remove(data); } } 编辑:for *循环是这样的设置,如下所示: […]

如何在Parallel.For中配置最大线程数

这是microsoft为并行提供的示例,我想知道如何为此代码配置最大线程数。 // A basic matrix multiplication. // Parallelize the outer loop to partition the source array by rows. System.Threading.Tasks.Parallel.For(0, matARows, i => { for (int j = 0; j < matBCols; j++) { // Use a temporary to improve parallel performance. double temp = 0; for (int k = 0; k < matACols; k++) { […]

可以用LINQ语句替换所有’for’循环吗?

是否可以将以下’foreach’编写为LINQ语句,我想更常见的问题是,任何for循环都可以被LINQ语句替换。 我对任何潜在的性能成本都不感兴趣,只是在传统的命令式代码中使用声明性方法的潜力。 private static string SomeMethod() { if (ListOfResources .Count == 0) return string.Empty; var sb = new StringBuilder(); foreach (var resource in ListOfResources ) { if (sb.Length != 0) sb.Append(“, “); sb.Append(resource.Id); } return sb.ToString(); } 干杯 AWC

在C#中是(;;)安全,它真正做了什么?

我在现有的代码中找到了一个空的for语句,我想知道它的作用是什么,它是否“安全”。 这只是感觉不对。 for(;;) { //some if statements and a case statement } 谢谢!

for-loop optimization – 需要与否?

我是否必须像下面那样优化我的FOR循环,否则编译器会为我做这个? //this is slow, right? for (int i = 0; i < menuItem.DropDownItems.Count; i++) { … } //this should be much faster right? for (int i = 0, count = menuItem.DropDownItems.Count; i < count; i++) { … } PS。 我打赌这已经发布但我没有找到任何东西,抱歉可能有重复。 PPS。 对不起,我编写了很多JavaScript代码 – 我们必须考虑这些优化……在.net-world中可能看起来很荒谬。

如何在C#中的for循环的每次迭代之间添加一些延迟?

我正在使用C#编写ASP.NET MVC3。 我想在for循环的每次迭代之间添加一些延迟。 for(int i=0; i<5; i++) { //some code //add delay here } 那我怎么能这样做?

for循环中的随机迭代

我想创建一个以随机顺序循环遍历数字0-8的for循环。 请注意,每个号码只能访问一次。 我怎样才能做到这一点?

C# – For-loop内部

一个关于for循环的快速,简单的问题。 情况当我突然想知道for循环实际上是如何表现时,我正在编写一些高性能代码。 我知道我之前偶然发现了这一点,但不能为我的生活再次找到这个信息:/ 不过,我主要担心的是限制器。 说我们有: for(int i = 0; i < something.awesome; i++) { // Do cool stuff } 问题是something.awesome存储为内部变量或循环不断检索something.awesome进行逻辑检查? 我问的原因当然是因为我需要遍历很多索引的东西而且我真的不希望每次传递都有额外的函数调用开销。 然而,如果something.awesome只被召唤一次,那么我会回到我快乐的摇滚之下! 🙂

LINQ vs foreach vs性能测试结果

有人可以解释这些结果吗? 我知道有一些重复的问题,但我还没有找到一个与我的结果得出相同结论的问题:o using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpeedTest { class Person { public Person(string name) { this.Name = name; } public string Name { get; set; } } class Program { static void Main(string[] args) { var people = new List(); AddTwins(“FRANCISCO”, people); var stopwatch = new […]