我正在尝试理解CompareTo方法的正确实现和用法。
假设我有Book对象和代码中的某处我希望将新创建的book对象与数据库中的对象进行比较。
Book newBook = new Book();
Book dbBook = repository.GetBook(1);
所以基本上我正在尝试比较具有多个参数的两个对象
粗略地说我有以下关注,那么如何实现具有这3个要求的方法呢?
public int CompareTo(object obj)
{
if(obj is Book)
{
Book b = (book)obj;
var b = Name.ToUpper().CompareTo(b.Name.ToUpper());
}
else
{ throw new Exception("Not a book instance"); }
}
答案 0 :(得分:2)
首先,最好使用泛型,将Book类定义为:
public class Book : IComparable<Book>
然后实现CompareTo
方法:
public int CompareTo(Book book)
{
int result = Title.CompareTo(book.Title);
if (result == 0)
{
result = Edition.CompareTo(book.Edition);
if (result == 0)
{
result = Language.CompareTo(book.Language);
}
}
return result;
}
这当然假设属性Title
,Edition
和Language
是实现IComparable
的类型(例如string
)。