我想排序ArrayList
的自定义项目,并得到'至少有一个对象必须实现IComparable。'尽管为他们实施了IComparable
接口。我只是打电话给默认Sort()
没有参数或任何东西。我想要分类的对象的定义如下:排序和IComparable的问题
class AssetItem : System.IComparable<AssetItem>
{
public string AssetName { get; set; }
public int AssetID { get; set; }
public int CompareTo(AssetItem item)
{
if (null == item)
{
return 1;
}
else if (this.AssetID < item.AssetID)
{
return -1;
}
else if (this.AssetID == item.AssetID)
{
return this.AssetName.CompareTo(item.AssetName);
}
else
{
return 1;
}
}
此代码构建得很好。还有一件事要牢记,我怀疑这可能是问题,尽管我不明白,上面的班级是一个内部班级。如果那是让我沮丧的事情,你会如何去比较内心阶层?
Doh,那是一个nobrainer。感谢您的帮助! – Trajanus 2009-10-05 17:12:00
我有同样的问题,谢谢!这让我怀疑,为什么不能从IComparable继承IComparable? –
jrummell
2009-11-23 16:38:08
@ jrummell:这会迫使它试图将自己与* any *对象进行比较,而不仅仅是正确类型的对象,这有点痛苦。 – 2009-11-23 17:00:47