【发布时间】:2022-01-05 11:41:14
【问题描述】:
我对编码很陌生。有没有其他方法可以编写此代码以从 c# 中的列表中删除内容?
public void RemoveItem(string itemDescription)
{
MenuItem found = new MenuItem(false, 0, "", ""); // must be a better way - to fix
foreach (MenuItem item in MenuItems)
{
if (item.Description == itemDescription)
{
found = item;
}
}
MenuItems.Remove(found);
}
【问题讨论】:
-
"必须是更好的方法" 是的,分配
null并检查它是否为空,您将其删除。 -
MenuItems是什么类型?如果是List<MenuItem>,你可以做MenuItems.RemoveAll(item => item.Description == itemDescription); -
MenuItems上可能有一种方法可供您使用,但它在这里更精简,IMO,在if中执行MenuItems.Remove(item); return;并省去found变量。 -
@JohnathanBarclay 这将删除所有满足条件的菜单项,但 OP 的代码仅删除满足条件的最后一个菜单项。
-
@SomeBody 是的,我假设只删除最后一个匹配的项目不是预期的行为。