gpt4 book ai didi

c# - ImmutableList 检查并删除

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:28 24 4
gpt4 key购买 nike

我有一个 System.Collections.Immutable.ImmutableList<T>我想检查其中是否存在某个项目并一步将其删除。像这样:

var newList = oldList.Remove(item, out bool found);

这可能吗?

最佳答案

由于开箱即用的功能不存在,一个简单的扩展方法可以满足您的需求。

    public static ImmutableList<T> Remove<T>(this ImmutableList<T> immutableList, T item, out bool found)
{
found = false;
if (immutableList.Contains(item))
{
found = true;
return immutableList.Remove(item);
}
return immutableList;
}

你也可以这样做

public static ImmutableList<T> Remove<T>(this ImmutableList<T> immutableList, T item, out bool found)
{
var oldCount = immutableList.Count;
var results = immutableList.Remove(item);
found = oldCount > results.Count;
return results;
}

但是正如评论中所提到的,这些都可能没有那么有效。一个适当有效的模型可能需要是 ImmutableList<T> 的自定义实现。 vs 只是像这样的扩展方法。

根据 Slai的建议这可能更有效:

public static ImmutableList<T> Remove<T>(this ImmutableList<T> immutableList, T item, out bool found)
{
found = false;
var possibleLocation = immutableList.IndexOf(item);
if (possibleLocation < 0)
{
return immutableList;
}
immutableList.RemoveAt(possibleLocation);
found = true;
return immutableList;
}

关于c# - ImmutableList<T> 检查并删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com