C# 如何在没有计数器的情况下进行计数?
有时,在开发阶段,我需要查看是否为创建的每个元素更改了名称,或者只是想区分数组中不同实例的名称。这种行为严格适用于开发阶段,并且只能在短时间内应用(因此不需要长期解决方案——Q&D很好) 通常,我会以下面的方式介绍计数器,但我突然想到可能有更好的方法。基本上,我希望模拟for的计数器变量的行为,而不实际引入它(留在foreach)C# 如何在没有计数器的情况下进行计数?,c#,foreach,C#,Foreach,有时,在开发阶段,我需要查看是否为创建的每个元素更改了名称,或者只是想区分数组中不同实例的名称。这种行为严格适用于开发阶段,并且只能在短时间内应用(因此不需要长期解决方案——Q&D很好) 通常,我会以下面的方式介绍计数器,但我突然想到可能有更好的方法。基本上,我希望模拟for的计数器变量的行为,而不实际引入它(留在foreach) int计数器=1; IEnumerable结果=原件。选择(原件 =>新事物{Name=“Hazaa”+计数器+++}); 使用选择的重载 IEnumerable&l
int计数器=1;
IEnumerable结果=原件。选择(原件
=>新事物{Name=“Hazaa”+计数器+++});
使用选择的重载
IEnumerable<Typo> result = originals.Select((original, counter)
=> new Thingy { Name = "Hazaa" + (counter + 1) });
IEnumerable结果=原件。选择((原件,计数器)
=>新事物{Name=“Hazaa”+(计数器+1});
使用包含索引的重载。您查看了吗?您的标题与问题不匹配。标题谈到的是foreach
,但是在你的代码中没有foreach
。@loli:这有几个问题。首先,您必须在列表中搜索循环中的每一项。现在是O(n^2)。第二,如果有重复项,它将不起作用,因为你只能得到第一个匹配项的索引。。。正是我想要的+1表示正确的可能性,但也表示简洁。
IEnumerable<Typo> result = originals.Select((original, counter)
=> new Thingy { Name = "Hazaa" + (counter + 1) });