我有一個專案串列和一個 ItemsContainer 串列,這是一個包含專案的類。
- 所有的物品都是獨一無二的
- 每個專案最多位于一個ItemContainer
- 僅 ItemContainer 支持:Remove(Item)和Contains(Item)方法
我想從所有 itemContainers 中洗掉我串列中的所有專案。
現在我正在考慮做這樣的事情:
List<ItemContainer> itemContainerList = ...
List<Item> itemsList = ...
foreach (ItemContainer itemContainer in itemContainerList)
{
foreach (Item item in itemsList)
{
if (itemContainer.Contains(item))
{
itemContainer.Remove(item);
}
}
}
希望讓這更高效、更優雅。
謝謝,阿維拉姆。
uj5u.com熱心網友回復:
在公布更多資訊之后,我發現這些限制意味著任何“常規有效”的方法都不適用。
根據您的限制,我只能建議翻轉回圈:
foreach (Item item in itemsList)
{
foreach (ItemContainer itemContainer in itemContainerList)
{
if (itemContainer.Contains(item))
{
itemContainer.Remove(item);
break;
}
}
}
由于您的設定存在不幸的先前存在的問題,它仍然不理想,但由于只瀏覽這些專案一次,它會稍微快一些。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411347.html
標籤:
