0

我有一个SortedSet自定义对象,我想删除第一个元素,我将它与集合中的First()函数一起使用SortedSet。问题是这不起作用,我不知道为什么。

有什么帮助吗?

[编辑] 我的代码

URL u = Queue.First(); Queue.Remove(u);

其中 URL 是自定义类

4

7 回答 7

10

First()方法正常工作。但是您将删除已First()排序的项目。

SortedSet<string> set = new SortedSet<string>();
set.Add("b");
set.Add("c");
set.Add("a");
Console.WriteLine(set.First()); // Display 'A'
set.Remove(set.First()); // Remove 'A'
Console.WriteLine(set.First()); // Display 'B'
于 2013-06-24T14:10:00.130 回答
8

这很简单,例如

SortedSet<string> set = new SortedSet<string>();
set.Add("Hi");
var f = set.First();
set.Remove(f);
于 2013-06-24T14:05:45.397 回答
1

First() 不会删除任何内容。您不会将其从堆栈中弹出。如果你想在你拿走它之后删除它。

 var coll =....your sorted set
 var p = coll.First();
 coll.remove(p)
于 2013-06-24T14:09:11.310 回答
1

您可以使用SortedSet<T>.Remove方法Enumerable.First<TSource>方法

从 中删除指定的项目SortedSet<T>

返回序列的第一个元素。

SortedSet<string> s = new SortedSet<string>();
...
s.Remove(s.First());
于 2013-06-24T14:06:58.883 回答
1

使用 SortedSet.Remove() 有关更多信息,请参阅此链接

有关一些不错的 sortedset 示例,请参见此链接

于 2013-06-24T14:10:05.990 回答
0

使用控制台应用程序的工作示例

    static void Main(string[] args)
    {
        SortedSet<string> set = new SortedSet<string>();
        set.Add("One");
        set.Add("Two");
        set.Add("Three");

        string first = set.First();
        set.Remove(first);

        foreach (var s in set)
        {
            Console.WriteLine(s);                
        }
        Console.ReadLine();
    }
于 2013-06-24T14:15:52.180 回答
0

您不能通过调用 First() 来删除元素。First() 扩展方法只返回对第一个元素的引用。为了删除项目,您需要调用Remove

于 2013-06-24T14:07:14.477 回答