【发布时间】:2013-12-04 10:43:10
【问题描述】:
我正在尝试了解 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"); }
}
【问题讨论】:
-
CompareTo旨在为该类型的对象提供排序,这意味着书籍 A 可能比书籍 B“更小”。您如何定义书籍的“更小”? -
@Jon,这并不意味着“更小”,而是意味着“在订购时出现”。所以 OP 是说,为了对书籍进行排序,必须首先按标题排序,然后按版本排序,最后按语言排序。
-
@RoyDictus:这正是引号中“更小”的意思;该术语在广义上使用,即pretty common practice。此外,IMO 问题没有明确指定您描述的排序关系,而不是假设我问过。
-
您似乎希望按该顺序比较{按标题、按版本、按语言},这是 OP 列出字段的顺序。
标签: c# .net comparison