可以繼承IComparable的。這方面的一個例子是:
public class MyClass : IComparable
{
public int Day { get; set; }
public int Hour { get; set; }
public int CompareTo(object obj)
{
if (obj is MyClass)
{
MyClass slot = (MyClass)obj;
if (Day < slot.Day)
{
return -1;
}
else if (Day > slot.Day)
{
return 1;
}
else
{
if (Hour < slot.Hour)
{
return -1;
}
else if (Hour > slot.Hour)
{
return 1;
}
else
{
return 0;
}
}
}
else
{
throw new ArgumentException("Object is not MyClass");
}
}
public override int GetHashCode()
{
unchecked
{
return Day.GetHashCode()^Hour.GetHashCode();
}
}
public override bool Equals(object obj)
{
if (obj is MyClass)
{
return this == (MyClass)obj;
}
else
{
throw new ArgumentException("Object is not MyClass");
}
}
public static bool operator ==(MyClass a, MyClass b)
{
return a.CompareTo(b) == 0;
}
public static bool operator !=(MyClass a, MyClass b)
{
return a.CompareTo(b) != 0;
}
public static bool operator <(MyClass a, MyClass b)
{
return a.CompareTo(b) < 0;
}
public static bool operator >(MyClass a, MyClass b)
{
return a.CompareTo(b) > 0;
}
public static bool operator <=(MyClass a, MyClass b)
{
return a.CompareTo(b) <= 0;
}
public static bool operator >=(MyClass a, MyClass b)
{
return a.CompareTo(b) >= 0;
}
}
然後,你可以這樣做:
List<MyClass> listOfStuff = new List<MyClass>();}
// Add some stuff to the list E.G.
listOfStuff.add(new MyClass());
// Sort the list
listOfStuff.sort();
忘了提IM限於.NET 2.0的原因IM單聲道團結工作,這似乎是.NET 3.5最早的 – user1711383 2013-03-06 14:38:33
@ user1711383:我已經添加了一個使用List.Sort的替代方案,它也應該可以與.net 2.0一起使用。 – Heinzi 2013-03-06 14:43:06