我有一个递归函数,用于在层次结构树中向下搜索并从列表中删除找到的对象:
我希望这个函数能够从标签列表中移除此级别下的所有子设备标签,递归调用其子级,然后将该列表返回到上一级。
这样会通过引用传递标签列表并修改原始传递的列表吗?还是我应该按照以下方式进行操作?
并将所有返回的列表相加?
private List<Tag> RemoveInvalidTags(Device device, List<Tag> tags)
{
var childDevices = device.ChildDevices.Select(c => c.ChildDevice);
foreach (var child in childDevices)
{
tags.Remove(child.Tag);
RemoveInvalidTags(child, tags);
}
return tags;
}
我希望这个函数能够从标签列表中移除此级别下的所有子设备标签,递归调用其子级,然后将该列表返回到上一级。
这样会通过引用传递标签列表并修改原始传递的列表吗?还是我应该按照以下方式进行操作?
validTags = CollectValidTags(child, tags);
并将所有返回的列表相加?
ref
最有用的方式。 - Kirk Broadhurst