gpt4 book ai didi

c# - C# HashSet 中是否有等效的 Pop()

转载 作者:行者123 更新时间:2023-11-30 20:28:33 25 4
gpt4 key购买 nike

如果我有一个非空的HashSet<T> items , 这两行是否有任何快捷方式:

T item = items.First(); // this can be any item, it does not have to be the first one
items.Remove(item);

我以为T item = items.Pop()这将是一个适当的功能,但它不存在。

我知道,拥有两条线或编写一个扩展方法没什么大不了的,但我不知何故期望一个内置的 Pop() -函数,不依赖于 First() .

编辑:

由于对 First() 存在一些混淆: 我绝对不关心从 HashSet 弹出哪个项目, 所以 items.Last()对我来说也可以。

关于使用 First() 的困惑是我正在努力解决的问题:即使我评论了它,阅读代码也会导致假设,使用 First() 在某种程度上很重要(不是)。

澄清一下:我想知道是否有合适的方法从 HashSet 中取出一些元素, 让它进一步使用,不要给人留下这样的印象,它必须是第一个或最后一个或任何项目,而是要清楚,此时可以选择任何项目。

最佳答案

这是一个优雅的解决方案(我使用了 list 但你可以用 hashset 代替它):

class Program
{
static void Main(string[] args)
{
List<object> items = new List<object>();
//code to fill the list...
object item = items.RemoveFirst();
}
}

static class Extensions
{
public static T RemoveFirst<T>(this ICollection<T> items)
{
T item = items.FirstOrDefault();
if (item != null)
{
items.Remove(item);
}
return item;
}
}

关于c# - C# HashSet 中是否有等效的 Pop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154899/

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