在泛型对象上使用类的属性

时间:2014-11-23 04:38:31

标签: c#

基本上我想要做的是以下内容: 我有一个叫做动物的类,它会读出一些与它有关联的属性的动物,如年龄,类型,出生日期等。 我遇到的问题是CompareTo()方法,该方法将通用对象作为参数,检查它是否为Animal类型,如果是,则将与此对象关联的名称与该对象的实例进行比较。 name与Animal的实例关联。

我尝试使用

this.Name.CompareTo(object.Name);

但显然它并不适用于这种情况,因为Name没有在object中定义。有没有办法解决这个问题?能够比较对象内部的属性,知道它是Animal类型,属于Animal类实例中的属性吗? 提前谢谢。

2 个答案:

答案 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
}