Tag: foreach

foreach控制c#跳过控件

我有以下循环来删除我的C#Windows窗体应用程序中的按钮。 唯一的问题是它会跳过其他所有按钮。 如何从表单中删除所有按钮控件? foreach (Control cntrl in Controls) { if(cntrl.GetType() == typeof(Button)) { Controls.Remove(cntrl); cntrl.Dispose(); } }

列表ForEachrest

有没有办法打破foreach扩展方法? “break”关键字无法将扩展方法识别为要中断的有效范围。 //Doesn’t compile Enumerable.Range(0, 10).ToList().ForEach(i => { System.Windows.MessageBox.Show(i.ToString()); if (i > 2)break; }); 编辑:从问题中删除“linq” 注意代码只是一个示例,显示break在扩展方法中不起作用…我真正想要的是让用户能够中止处理列表.. UI线程有一个中止变量而for循环只是中断当用户点击取消按钮时。 现在,我有一个正常的for循环,但我想看看是否可以使用扩展方法。

来自IEnumerable的foreach中特定类型的对象

我正在使用只实现非通用IEnumerable和ICollection的旧集合对象。 当我尝试将此对象与foreach在foreach表达式的LHS上给出更具体的类型时,该对象究竟发生了什么? // LegacyFooCollection implements non-generic IEnumerable LegacyFooCollection collection = GetFooCollection(); foreach (Foo f in collection) { // etc. } 我知道(因为我已经尝试过了)当collection所有东西都是Foo类型时,这是安全的,但如果失败会发生什么?

“foreach”循环背后发生了什么?

可能重复: foreach循环如何在C#中工作? 我一直在网上搜索,我很难找到任何关于C#中foreach循环幕后真实情况的答案。 我知道这个问题并不真正与实际编码有关,但它困扰着我。 我对OO编程特别是接口很新。 我知道他们是合同,我理解IEnumerable和IEnumerator如何工作的 – 或者我认为。 我一直在MSDN上阅读这篇文章: IEnumerable Interface 我理解一切都是如何建立的。 虽然在Main循环中我怎么有点不清楚foreach如何知道如何通过_people中的所有值来进行_people 。 怎么知道这个? 它如何通过调用return new PeopleEnum(_people);跟踪Current return new PeopleEnum(_people); ? 编辑 :我不知道这是如何完全重复。 是的,它的类似理由和同样的问题正在被问到,但我们正在寻找不同的答案或我想要的答案在前一个问题中没有讨论过。 像foreach(在obj中的int i){…}等等的foreach循环等同于 ……“有点”不是我正在寻找的答案。

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 […]

你可以在C#中乱序列举一个集合吗?

有没有办法使用foreach循环向后或以完全随机的顺序迭代集合?

C# – For vs Foreach – 巨大的性能差异

我正在对一个算法进行一些优化,该算法在给定的数组中找到大于X的最小数字,但随后ai偶然发现了一个奇怪的差异。 在下面的代码中,“ForeachUpper”在625ms结束,“ForUpper”结束,我相信,几个小时(疯狂地慢)。 为什么这样? class Teste { public double Valor { get; set; } public Teste(double d) { Valor = d; } public override string ToString() { return “Teste: ” + Valor; } } private static IEnumerable GetTeste(double total) { for (int i = 1; i d.Valor), test); Console.WriteLine(“————“); ForUpper(ieTeste.Select(d => d.Valor), test); Console.Read(); } private […]

有条件的C#断点?

我正在调试一个foreach循环,该循环将迭代1000次以上 – 所以我只想在循环内断点以打破特定项目。 所以… foreach(Employee employee in employees) { //DO SOMETHING //BREAK HERE WHEN employee.Id == ‘2342’ //DO SOMETHING ELSE } 我是否必须在其中编写一个If语句和一些虚拟代码并以这种方式打破它? 唯一的办法呢?

如何在C#中的自定义对象上使用foreach关键字

有人可以分享一个将foreach关键字与自定义对象一起使用的简单示例吗?

foreach循环消除边界检查的特殊情况是什么?

foreach / for循环消除边界检查的特殊情况是什么? 还有哪些界限检查呢?