我使用以下语法循环列表集合:
For Each PropertyActor As JCPropertyActor In MyProperty.PropertyActors
i = IndexOf(PropertyActor)
Next
Run Code Online (Sandbox Code Playgroud)
如何在循环中获取当前对象的索引?我正在使用IndexOf(PropertyActor)但这似乎效率低下,因为当我已经拥有该对象时它会搜索该集合!
Joe*_*orn 12
索引对IEnumerable没有任何意义,这是foreach构造使用的.这很重要,因为foreach
如果您的特定集合类型以奇怪的方式实现IEnumerable,则可能无法按索引顺序枚举.如果你有一个可以通过索引访问的对象,并且你在迭代期间关心索引,那么你最好只使用传统的for循环:
for (int i=0;i<MyProperty.PropertyActors.Length;i++)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
保持一个单独的计数器可能是最容易的:
i = 0
For Each PropertyActor As JCPropertyActor In MyProperty.PropertyActors
...
i = i + 1
Next
Run Code Online (Sandbox Code Playgroud)
顺便说一句,Python有一个方便的方法:
for i, x in enumerate(a):
print "object at index ", i, " is ", x
Run Code Online (Sandbox Code Playgroud)