Tag: for loop

在循环外声明循环索引变量有什么好处?

我在很多游戏引擎代码中看到了这一点。 这应该比你在for循环体中声明它更快吗? 此外,还有许多其他for循环,每个循环使用相同的变量。 int i; for(i=0; i<count; ++i) { } VS for(int i=0; i<count; ++i) { } 顺便说一下,我自己从不这样做,只是对它背后的想法感到好奇,因为除了表演,我不知道为什么有人会这样做。

在for循环声明中初始化变量的范围实际上不仅仅是块范围吗?

考虑带有计数器的for循环: for (int i = 0; i < 100; i++ /* `i` is visible here */) { /* `i` is visible here */ } /* `i` not visible here */ 一切都很好。 我们说i有“阻止”范围。 但是,为什么在i++中无法访问在for循环中声明的变量? 例如,为什么j不在此范围内,当它还具有“阻止”范围并且在i += j之前的时间段内声明? for (int i = 0; i < 100; i += j /* only `i` is visible here */) { […]

c#:如何从List 中的特定索引读取

我有一类人和列表集合列表包含人类的所有值,例如: 列表ilist有2个值[0] = {firstname,lastname}。 [1] = {FIRSTNAME2,lastname2} 现在当我迭代到列表我能够打印列表,但我想更改我的列表的某些部分的值,例如在索引1,如果我想将firstname2的值更改为firstname3我无法做到这一点。 任何人都可以告诉我如何打印列表,然后在该索引上更改索引的任何值,即person类中的firstname和secondname变量,以便我可以更新我的值谢谢

C#,For循环和速度测试……第二次完全相同的循环更快?

public Int64 ReturnDifferenceA() { User[] arrayList; Int64 firstTicks; IList userList; Int64 secondTicks; System.Diagnostics.Stopwatch watch; userList = Enumerable .Range(0, 1000) .Select(currentItem => new User()).ToList(); arrayList = userList.ToArray(); watch = new Stopwatch(); watch.Start(); for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++) { DoThings(arrayList[loopCounter]); } watch.Stop(); firstTicks = watch.ElapsedTicks; watch.Reset(); watch.Start(); for (Int32 loopCounter = 0; loopCounter […]

Parallel.For使用step!= 1

有没有办法实现这个for循环的Parallel.For版本? for (int i = 0; i < 100; i += 2) { DoStuff(i); } 我没有看到接受步骤参数的重载,但我想不出任何理由这在逻辑上是不可能的。 对此和此问题的接受答案建议在使用Enumerable.Range生成的一系列int上使用Parallel.ForEach ,但在我的情况下,我使用线程本地数据, 因此Parallel.ForEach不是一个选项 。 另一种选择是检查我的循环体中是否i % 2 == 0并return ,但这仍然执行线程本地数据初始化器Func和终结器Func 。 以下是演示此选项的代码段: Parallel.For(0, limit, () => new Bar(), //thread local data initialize (i, state, local) => //loop body { if (i % 2 != 0) return local; local.foo += […]

循环遍历没有reflection的对象属性

我有MyModel类和MyModel的一些对象。 我需要没有reflection的对象的for循环或foreach属性。 如何实施? 类示例: public class MyModel { public string Level1_TypeName { get; set; } public string Level1_AttrType { get; set; } public string Level1_AttrValue { get; set; } public string Level2_TypeName { get; set; } public string Level2_AttrType { get; set; } public string Level2_AttrValue { get; set; } public string Level3_TypeName { get; […]

C# – For循环和lambda表达式

我的问题是为什么我在lambda表达式中使用迭代器变量得到错误的结果。 好吧,我已经按照SWeko的回答了 。 但它对我不起作用这是我的伪代码: List list = new List(3); // where list.Count=3 for (int i=0;i Console.WriteLine (list[yy])); } 但控制台只写道 list[3] 三次,好像唯一的“yy”值是“i”的最后一个值似乎有效,因为在声明“yy”变量之前,控制台返回“i = 1”但它并不是真的,我不知道我在做什么。 谢谢你的建议!

For-Statement,每1000次演练,做点什么

我正在穿过Forloop 100’000次。 (这个数字可以多样化) 每1000次我想做一些特别的事情,我在其他演练中不做的事情。 像这样的东西: for (int i = 0; i < 100000; i++) { doTasks(); //Normal if(i == 1000 || i == 2000 || i == 3000 || i == 4000 ) //and so on… { doSomethingElse(); //Special, For every 1000th walkthrough } } 完成这项任务最有效的方法是什么?

运算符不能应用于’Method Group’和’int’类型的操作数

我正在尝试获取此字符串数组中的元素数量,但它不会让我从Count取出1。 string [] Quantitys = Program.RecieptList[i].ItemQuantitys.Split(new char[] {‘*’}); for (int ii = 0; i <= Quantitys.Count – 1; ii++) { } 我收到一条错误消息说明 运算符’ – ‘不能应用于’Method Group’和’Int’类型的操作数。 什么是正确的方法呢?

如何处理循环中的exception并继续迭代?

我需要一个for循环,它将完成所有的迭代,即使在任何一个迭代中都有任何exception。