我周二参加了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
变量
答案 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岁?”