2017-08-02 26 views
-3

我正在做一個關於.Net學院的教程系列,並且遇到了問題。他們真的沒有一個有用的幫助部分,所以我想知道這裏有人能幫助我。我的問題是,我覺得我做了正確的代碼,但我得到這個錯誤:練習:將DateOfBirth屬性添加到您的課程

Not all requirements have been met.
You must declare a DateTime property named DateOfBirth

這裏是我的代碼:

using System; 

public class Person 
{ 
    public Person(string firstName, string lastName) 
    { 
     FirstName = firstName; 
     LastName = lastName; 
    } 

    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public int Age {get; set;} 

    public string GetFullName() 
    { 
     return FirstName + " " + LastName; 
    } 

    public int DateOfBirth() 
    { 
     return DateTime.Now.AddYears(-Age).Year; 
    } 
} 
public class Program 
{ 
    public static void Main() 
    { 

    } 
} 
+1

你可以google一下如何在類中添加一個DateTime屬性。 –

+6

你的'DateOfBirth'是一個方法而不是一個屬性,它的類型是'int'而不是'DateTime'。 –

+2

另外,請注意,'返回DateTime.Now.AddYears( - 年齡)。年;'是一個相當錯誤的實現 –

回答

2

你應該申報出生日期作爲屬性這樣

public DateTime DateOfBirth {get; set;} 

和年齡應該是一個計算值屬性,而不是像這樣

public int Age 
     { 
      get 
       { 
       return DateTime.Now.Year - DateOfBirth.Year; 
       }  
     } 
+0

謝謝@ClearLogic幫助我。這工作。我忘了添加該作業的內容:「將DateOfBirth屬性添加到類型爲DateTime的類中。」我只需要第一部分,但看到第二部分太幫助我進一步理解。感謝:) – Thinnling

+1

同樣,你可以將'GetFullName'方法轉換爲只有getter屬性'FullName' – ClearLogic

+1

當然,如果你將'Age'更改爲計算屬性(它應該是,因爲它會改變,但是日期不會改變),那麼您需要將'DateOfBirth'更改爲常規(未計算)的屬性。否則,你將有兩個屬性試圖從另一個計算它們的值並且具有無限循環。 –

3

此:

public int DateOfBirth() 
{ 
    return DateTime.Now.AddYears(-Age).Year; 
} 

不是物業,but a method。您可以輕鬆地把它變成一個屬性,但:

public int DateOfBirth 
{ 
    get { return DateTime.Now.AddYears(-Age).Year; } 
} 

查看文檔的properties in C#

說明你可能會仍然會碰到的問題,因爲類型爲int,而不是需要DateTime。跳過.Year參考,並返回整個DateTime結構,最後更新屬性簽名:

public DateTime DateOfBirth 
{ 
    get { return DateTime.Now.AddYears(-Age); } 
} 
1

您有一個名爲出生日期的方法,相反,它應該是這樣的一個屬性:

public DateTime DateOfBirth 
{ 
     get { return DateTime.Now.Date.AddYears(-Age); } 
} 

注意的現在使用.Date獲取日期而不是時間部分。