Я пытаюсь поместить пользовательские объекты в отсортированный словарь ... Затем я пытаюсь использовать метод расширения (Max ()) для этого отсортированного словаря. Однако я получаю исключение: «По крайней мере, один объект должен реализовывать IComparable». Я не понимаю, почему я получаю это, поскольку мой пользовательский объект, очевидно, реализует IComparable. Вот мой код:
public class MyDate : IComparable<MyDate>
{
int IComparable<MyDate>.CompareTo(MyDate obj)
{
if (obj != null)
{
if (this.Value.Ticks < obj.Value.Ticks)
{
return 1;
}
else if (this.Value.Ticks == obj.Value.Ticks)
{
return 0;
}
else
{
return -1;
}
}
}
public MyDate(DateTime date)
{
this.Value = date;
}
public DateTime Value;
}
class Program
{
static void Main(string[] args)
{
SortedDictionary<MyDate, int> sd = new SortedDictionary<MyDate,int>();
sd.Add(new MyDate(new DateTime(1)), 1);
sd.Add(new MyDate(new DateTime(2)), 2);
Console.WriteLine(sd.Max().Value); // Throws exception!!
}
}
Что, черт возьми, я делаю неправильно ???