在C#中使用排序的一组数据结构,并使用ICompare设定的由 特定值插入排序或有效地增加工作,但试图让在设置最小值时,当引发异常我的代码至少有一个对象必须实现IComparable。 SortedSet的C#
class priorityqueue
{
public SortedSet<NODE> opendList;
private class SortAccordingToTotal : IComparer<NODE>
{
public int Compare(NODE a, NODE b)
{
return a.TOTAL.CompareTo(b.TOTAL);
}
}
public priorityqueue()
{
opendList = new SortedSet<NODE>(new SortAccordingToTotal());
}
public void Push (NODE N)
{
opendList.Add(N);
}
public bool search(NODE N)
{
return opendList.Contains(N);
}
public NODE POP()
{
NODE TEMP = new NODE();
TEMP = opendList.Min();
opendList.Remove(TEMP);
return TEMP;
}
}
你可以给一个例子测试用例引发这个异常吗? –
'Min'是一个属性,而不是一个方法(https://msdn.microsoft.com/en-us/library/dd411719(v=vs.110).aspx),所以尝试更改'opendList.Min()'与'opendList.Min'和它应该工作。 –
不应该是问题,因为Min()也是IEnumerable上的扩展方法https://msdn.microsoft.com/library/dd411939%28v=vs.100%29.aspx –