Tag: 迭代

允许迭代而不产生任何垃圾

我在实现IEnumerable接口的对象池中有以下代码。 public IEnumerable ActiveNodes { get { for (int i = 0; i < _pool.Count; i++) { if (_pool[i].AvailableInPool) { yield return _pool[i]; } } } } 据我所知(根据这个问题),这将产生垃圾,因为需要收集IEnumerable对象。 _pool中的所有元素都不会被收集,因为池的目的是保持对所有元素的引用以防止垃圾创建。 任何人都可以建议一种允许迭代_pool的方法,以便不生成垃圾? 在池上迭代时,池中具有AvailableInPool == true所有项都应该迭代。 订单无关紧要。

如何在foreach循环中修改foreach迭代变量?

当我尝试这样做时…… Item[,] array = new Item[w, h]; // Two dimensional array of class Item, // w, h are unknown at compile time. foreach(var item in array) { item = new Item(); } …我得到的Cannot assign to ‘item’ because it is a ‘foreach iteration variable’ 。 不过,我还想那样做。 我们的想法是将默认的Item类值分配给现有项目。

有没有办法使用LINQ表达式填充集合?

LINQ的一大优点是允许您获取与集合相关的信息,而无需手动编写代码来迭代集合。 有没有办法使用LINQ来填充集合,从而避免编写循环? 例如,假设我有以下代码,它适用于从1到10的一系列数字: public static void LinqTest() { List intList = new List(); for (int i = 1; i <= 10; i++) // x % 2 == 1).Sum(); double intAverage = intList.Average(); Console.WriteLine(“Sum is {0}\tSum of Odds is {1}\tAverage is {2}”, intSum, intSumOdds, intAverage); } LINQ已经取代了检索有关数据信息所需的for循环。 我很好奇LINQ可以用来替换填充数据的for循环。 有没有办法使用LINQ替换以下两行代码? for (int i = 1; i <= […]

迭代静态类的属性来填充列表?

我有一类字符串常量,如何循环获取字符串并填充列表框? static class Fields { static readonly string FirstName = “FirstName”; static readonly string LastName = “LastName”; static readonly string Grade = “Grade”; static readonly string StudentID1 = “StudentID”; static readonly string StudentID2 = “SASINumber”; } public partial class SchoolSelect : Form { public SchoolSelect() { InitializeComponent(); //SNIP // populate fields //Fields myFields = new […]

什么时候用哪个?

编辑其他选项和下面稍微扩展的问题。 考虑一个类体的这个人为的抽象例子。 它演示了执行“for”迭代的四种不同方法。 private abstract class SomeClass { public void someAction(); } void Examples() { List someList = new List(); //A. for for (int i = 0; i o.someAction()); //D. plinq someList.AsParallel().ForAll(o => o.someAction()); 编辑:从答案和研究中添加一些选项。 //E. ParallelEnumerable ParallelEnumerable.Range(0, someList.Count – 1) .ForAll(i => someList[i].someAction()); //F. ForEach Parallel Extension Parallel.ForEach(someList, o => o.someAction()); //G. For Parallel […]

从htmldocument中删除html节点:HTMLAgilityPack

在我的代码中,我想删除没有src值的img标记。 我正在使用HTMLAgilitypack的HtmlDocument对象。 我发现img没有src值并试图删除它..但它给了我错误集合被修改; 枚举操作可能无法执行。 任何人都可以帮助我吗? 我使用的代码是: foreach (HtmlNode node in doc.DocumentNode.DescendantNodes()) { if (node.Name.ToLower() == “img”) { string src = node.Attributes[“src”].Value; if (string.IsNullOrEmpty(src)) { node.ParentNode.RemoveChild(node, false); } } else { ……….// i am performing other operations on document } }

现有的LINQ扩展方法类似于Parallel.For?

可能重复: LINQ相当于foren for IEnumerable forienumerable的linq扩展方法非常方便……但如果您只想对枚举中的每个项目应用一些计算而不返回任何内容,则无用。 所以我想知道我是否只是错过了正确的方法,或者它是否真的不存在,因为我宁愿使用内置版本,如果它可用……但我还没找到一个:-) 我可以发誓在某处有一个.ForEach方法,但我还没有找到它。 与此同时,我确实编写了自己的版本,以防它对其他人有用: using System.Collections; using System.Collections.Generic; public delegate void Function(T item); public delegate void Function(object item); public static class EnumerableExtensions { public static void For(this IEnumerable enumerable, Function func) { foreach (object item in enumerable) { func(item); } } public static void For(this IEnumerable enumerable, Function func) { foreach […]

迭代类属性

我正在尝试迭代Color类的Color属性。 不幸的是它不在一个集合中,所以它只是一个带有一堆静态属性的类。 有没有人知道它是否可以迭代一个类的属性是静态的还是基于对象的?

迭代字母 – C#a-caz

我有一个关于迭代字母表的问题。 我想有一个以“a”开头并以“z”结尾的循环。 之后,循环开始“aa”并计数到“az”。 之后以“ba”开头到“bz”等等…… 有人知道一些解决方案吗? 谢谢 编辑:我忘了我给函数一个字符“a”然后函数必须返回b。 如果你给“bnc”那么函数必须返回“bnd”