Можете ли вы перечислить коллекцию в C # не по порядку? - PullRequest
13 голосов
/ 31 октября 2008

Есть ли способ использовать цикл foreach для перебора коллекции в обратном порядке или в совершенно случайном порядке?

Ответы [ 11 ]

0 голосов
/ 31 октября 2008

вы можете сделать это задом наперед:

for (int i=col.count-1; i>0; i--){ 
      DoSomething ( col.item[i]) ;
}

Не уверен насчет точного синтаксиса, но это парадигма.

Что касается абсолютно случайного порядка, вы можете получить доступ к элементу коллекции через его индекс. Чтобы убедиться, что вы нажали каждый элемент, вам нужно будет отслеживать, какие элементы вы уже обработали (возможно, скопировав коллекцию и затем удалив элемент после доступа).

РЕДАКТИРОВАТЬ: больше деталей для произвольного доступа Код для произвольного доступа может выглядеть примерно так:

 collection c = originalCollection;
 while (c.count > 0) {
     int i = randomNumber(seed) mod c.count
     element d = c[i];
     c.remove(d);
     DoSomething(d);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...