基础面向对象程序设计考试。代码段

时间:2016-06-18 19:39:48

标签: c# methods

我周二参加了FOOP的考试(标题中描述),并且我已经提交了一个程序。问题是我不太明白以下几点。它是一种计算人年龄的方法:

public static int CalculateAge(DateTime dob)
{
    int years = DateTime.Now.Year - dob.Year;

    if ((dob.Month > DateTime.Now.Month) || (dob.Month == DateTime.Now.Month && dob.Day > DateTime.Now.Day))
        years--;

    return years;
}

我自己无法弄明白,所以我在互联网上查了一下。我不知道if声明中发生了什么。应该提到的是,我有一个名为Datetime

dob变量

1 个答案:

答案 0 :(得分:3)

此代码的作用是根据相对于当前日期的出生日期确定一个人的年龄。

让我们来看看第一行代码:

int years = DateTime.Now.Year - dob.Year;

他们在上面所做的是确定这个人活了多少年。

现在,我们来看看if语句中的条件。首先,我们将查看||的左侧(表示或 - else ,但对于此代码将被视为 -snippet)operator。

(dob.Month > DateTime.Now.Month)

本声明的作用是评估当月是否超过该人的出生月份。然后,考虑||运算符的右侧。

(dob.Month == DateTime.Now.Month && dob.Day > DateTime.Now.Day)

上述条件是否询问这是否是他们的出生月份,如果是,那么他们的生日是 future 吗?如果对其中一个或这些条件的回答是,则该人尚未到达他们的生日。因此,我们从总年数减去一年如下:

years--;

为了帮助你更好地思考这个问题,人们可以问“因为这是你生活的第16年,这是否意味着你实际上是16岁?”