в 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;
}
}
Можете ли вы привести пример testcase, где это исключение выбрано? –
'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 –