2016-06-18 40 views
-1

我正在參加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

好的今天是2016年6月18日。比較我的年齡,如果我出生於2000年1月1日,2000年6月17日和2000年6月19日 – Rhumborl

+0

計算年齡的方法較少,請參閱:http:// stackoverflow。 com/questions/9/how-do-i-calculate-someones-age-in-c – Neolisk

+1

它取自[這個問題的答案之一](http://stackoverflow.com/questions/9/how- do-i-calculate-someones-age-in-c) – Steve

回答

3

這段代碼正在做什麼,是根據相對於當前日期的出生日期確定一個人的年齡。

讓我們來看看第一行代碼:

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

他們在做什麼就行了以上決定整體多少年後此人一直活着。

現在,讓我們來看看if聲明中的條件。首先,我們將查看||(意味着或其他的左側),但對於此代碼段運算符將被視爲

(dob.Month > DateTime.Now.Month) 

該聲明所做的是評估當前月份是否超過該人的出生月份。然後,考慮||運營商的右側。

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

以上條件要求的這是否是他們出生一個月的問題,如果是的話,是他們在未來生日?如果對任一條件或這些條件的答案是,那麼該人尚未達到其生日。所以,我們從多年的總數減去關閉一個一年如下:

years--; 

爲了幫助您如何看待這個更好的,人們可能要問「只是因爲這是你在這裏住了16年,這是否意味着你實際上已經16歲了?「

+0

我真的認爲你應該離開OP去思考這個問題,只要花點時間。 – Ian