Когда-то в VB.net у меня есть что-то как:
For Each El in Collection
Write(El)
Next
Но если мне нужен индекс, я должен изменить его на
For I = 0 To Collection.Count() - 1
Write(I & " = " & Collection(I))
Next
Или еще (хуже)
I = 0
For Each El In Collection
Write(I & " = " & El)
I += 1
Next
Есть ли другой способ получить индекс?
Ответ Python в стиле xkcd - короче текущего!
print [4]*100
Реальный ответ, 63 символа:
from random import*;print sorted(randrange(9e9)for i in[0]*100)
-121--1632024- Это зависит от стандарта кодирования компании. Но большинство программистов используют camelCose или подчеркивание + camelCosure on Fields и PascalCose on Properties, например:
public class Foo
{
protected string _bar;
public string Bar
{
get { return _bar; }
}
}
-121--4154797- Если используется общая коллекция (Collection (of T)), то можно использовать метод IndexOf .
For Each El in Collection
Write(Collection.IndexOf(El) & " = " & El)
Next
Если вам нужен индекс, то цикл for является наиболее простым вариантом и имеет высокую производительность. Помимо упомянутых вами альтернатив, вы можете использовать перегруженный метод Select
для отслеживания индексов и продолжать использовать цикл foreach.
Dim list = Enumerable.Range(1, 10).Reverse() ''# sample list
Dim query = list.Select(Function(item, index) _
New With { .Index = index, .Item = item })
For Each obj In query
Console.WriteLine("Index: {0} -- Item: {1}", obj.Index, obj.Item)
Next
Однако я бы придерживался цикла for, если единственной причиной является итерация и знание индекса. Выше не ясно, почему вы решили пропустить цикл for.