基本上我想要做的是以下内容: 我有一个叫做动物的类,它会读出一些与它有关联的属性的动物,如年龄,类型,出生日期等。 我遇到的问题是CompareTo()方法,该方法将通用对象作为参数,检查它是否为Animal类型,如果是,则将与此对象关联的名称与该对象的实例进行比较。 name与Animal的实例关联。
我尝试使用
this.Name.CompareTo(object.Name);
但显然它并不适用于这种情况,因为Name没有在object中定义。有没有办法解决这个问题?能够比较对象内部的属性,知道它是Animal类型,属于Animal类实例中的属性吗? 提前谢谢。
答案 0 :(得分:3)
您可以使用as
运算符将对象强制转换为Animal
。如果转换成功,则可以比较名称属性。如果强制转换失败,则该对象将为null(如果另一个对象为null,则通常返回1)。
public int CompareTo(object obj)
{
var other = obj as Animal;
if (other == null) { return 1; }
if (this.Name == null) return (other.Name == null) ? 0 : -1;
return this.Name.CompareTo(other.Name);
}
答案 1 :(得分:0)
在比较名称之前,您需要将object
转换为Animal
:
public int CompareTo(object obj)
{
if (obj == null)
{
return 1;
}
if (obj is Animal)
{
Animal other = (Animal)obj;
return this.Name.CompareTo(other.Name);
}
return 1; // or whatever behavior you want if obj is not an Animal
}