Я не думаю, что существует простой путь, особенно что повторяемым может быть генератор (никакое возвращение). Существует достойное обходное решение, полагаясь на явную передачу индекса в тело цикла:
for itemIndex, item in enumerate(l):
if itemIndex>0:
previousItem = l[itemIndex-1]
else:
previousItem = None
Эти enumerate()
функция является встроенным.
У вас может быть 2 свойства с одним и тем же именем, которые отличаются только типом, и вы можете сделать это без динамического создания типа:
class Foo
{
public string X
{
get { return "Hello world"; }
}
}
class Bar : Foo
{
public new int X
{
get { return 42; }
}
}
void Main()
{
foreach(PropertyInfo prop in typeof(Bar).GetProperties())
{
Console.WriteLine("{0} : {1}", prop.Name, prop.PropertyType);
}
}
Результатом этого кода будет:
X: System.Int32
X: System.String