Diskuze: c# problém s kolekcí
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Dej si tam novej list, kterým budeš procházet a pak ten prvek smažeš v tom původním... viz ukázka.
List<int> listCisel = new List<int>();
for (int i = 0; i < 10; i++)
{
listCisel.Add(i);
}
foreach(int cislo in new List<int>(listCisel)) //zajímá tě hlavně tenhle řádek...
{
if (cislo == 5)
listCisel.Remove(cislo);
}
Ahoj, toto se dá jednoduše obejít pomocí foru
for (int i = 0; i < list.Count; i++)
{
//Pokračuješ stejně jako ve foreach..
}
Tak jsem to nakonec udělal pomocí dalšího listu, kam jsem si uložil ty, které potřebuji smazat a pro další průchod jsem je již smazal. Vím, že je to větší režie, ale v tomto případě to moc nevadí, jelikož tam nikdy nebude tolik informací na smazání, aby to aplikaci zbrzdilo. Tak ještě jednou moc děkuji za pomoc.
Ahoj,
tohle by nemuselo fungovat úplně správně.
Doporučuji při odstraňování prvků procházek kolekci od konce
Tam nejde o to, že prochází kolekci od začátku, nebo od konce, ale o to, že foreach používá iterátor, takže si hlídá, že v kolekci nedošlo ke změně,.. proto je také foreach o něco náročnější, než běžný FOR. Nevymýšlejte žádné kopírování a jednoduše to projeďte od zadu FOR cyklem.
Zobrazeno 6 zpráv z 6.