bullets.RemoveAll(bullet => bullet.Offscreen());
Edit: Pour faire ce travail-est Dans Silverlight, ajoutez la méthode d'extension suivante à votre projet.
Comme List<T>.RemoveAll
, cet algorithme est O (N) où N est la longueur de la liste par opposition à O (N * M) où M est le nombre d'éléments supprimés de la liste. Comme c'est une méthode d'extension avec le même prototype que la méthode RemoveAll
que l'on trouve dans les frameworks non-Silverlight, la méthode intégrée sera utilisée lorsqu'elle sera disponible, et celle-ci sera utilisée de manière transparente pour les builds Silverlight.
public static class ListExtensions
{
public static int RemoveAll<T>(this List<T> list, Predicate<T> match)
{
if (list == null)
throw new NullReferenceException();
if (match == null)
throw new ArgumentNullException("match");
int i = 0;
int j = 0;
for (i = 0; i < list.Count; i++)
{
if (!match(list[i]))
{
if (i != j)
list[j] = list[i];
j++;
}
}
int removed = i - j;
if (removed > 0)
list.RemoveRange(list.Count - removed, removed);
return removed;
}
}
voir la question suivante: http: // stackoverflow.com/questions/308466/comment-modifier-ou-supprimer-items-d'-un-enumerable-collection-while-iterating-throu –