比较一个类中的2个对象属性

时间:2014-12-15 12:01:38

标签: c# testing

我有一个包含多个属性的Person。此类的多个实例位于数组PersonList中。

是否可以比较数组中对象的不同实例的属性?

例如:找出谁是最老的,谁是最年轻的?

 public class Persoon
{
    public Persoon()
    {
    }

    //Properties maken
    public Persoon(string naam, Int16 gewicht, Int16 lengte, DateTime geboortedatum)
    {

        this.Naam = naam;
        this.Gewicht = gewicht;
        this.Lengte = lengte;
        this.Geboortedatum = geboortedatum;
    }




    public string Naam { get; set; } // AutoProperty

    public double Gewicht { get; set; } // AutoProperty

    public int Lengte { get; set; } // AutoProperty

    public DateTime Geboortedatum { get; set; } // AutoProperty

    public double BerekenBmi()
    {

        //BMI formule: Gewicht in kilogram / (Lengte in meter * Lengte in meter)
       return Math.Round(Gewicht/((Lengte/100.0) * (Lengte/100.0)),1);
    }

    public string BmiStadiumBerekenen()
    {


        if (BerekenBmi() < 18.5) return "ondergewicht";
        if (BerekenBmi() >= 18.5 && BerekenBmi() <= 24.9) return "normaal";
        if (BerekenBmi() >= 25 && BerekenBmi() <= 29.9) return "overgewicht";
        if (BerekenBmi() >= 30 && BerekenBmi() <= 34.9) return "obesitas I";
        if (BerekenBmi() >= 35 && BerekenBmi() <= 39.9) return "obesitas II";
        else return "morbide obesitas";


    }



    public int BerekenLeeftijd()
    {

        TimeSpan leeftijd = DateTime.Today - Geboortedatum;

        return (int) leeftijd.TotalDays;
    }


}

我需要比较最年长和最年轻的人,这样我才能计算出他们之间的时间。我之前只有2个没有阵列的人做过这个,但现在我需要用它们来做

2 个答案:

答案 0 :(得分:0)

可能是这样的(使用Linq):

var youngest = personList.OrderBy(p => p.Age).First();

(注意这假设你的列表中有一些东西可以开始)。

答案 1 :(得分:0)

当然可以,解决方案就在您的问题中!您必须使用compareTo()方法。 您必须在Person类中实现compareTo()方法。

public class Person implements Comparable<Person>{...}

然后你只需添加方法

@Override
public int compareTo(Person p) {...}

此方法需要参数中的另一个Person对象,因此您可以选择比较人物的方式。例如,你说你要比较每个Person的年龄,你只需要在compareTo()方法中放入一个if close语句。

 int result;
    if (this.age < p.getAge()) {
        esito = -1;
    }
    else if(this.age = p.getAge()){
        esito = 0;
    }
    else{
        esito = 1;
    }
 return esito;

此方法返回一个int数:负整数,零或正整数,因为此对象小于,等于或大于指定对象。

来源:

http://docs.oracle.com/javase/7/docs/api/

学校课程

:)