2017-08-02 8 views
-3

私は、.Net Academyのチュートリアルシリーズをやっており、問題にぶつかっています。彼らは本当に便利なヘルプセクションを持っていないので、ここの誰かが私を助けてくれるのだろうかと思っていました。私の問題は、私は、コードの権利を行っていると思うことですが、私はこのエラーを取得する:ここで演習:あなたのクラスに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

ようcaculated財産であるべきとあなたはdateOfBirthのを宣言する必要があります。 –

+6

あなたの 'DateOfBirth'はプロパティではなくメソッドであり、' DateTime'ではなく 'int'型です。 –

+2

また、 'return DateTime.Now.AddYears(-Age).Year;'はかなり間違った実装であることに注意してください。 –

答えて

2

この

public DateTime DateOfBirth {get; set;} 

や年齢などのプロパティは、クラスのDateTimeプロパティを追加するためにどのようにそれをグーグルことができ、代わりにこの

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

私を助けてくれた@ClearLogicに感謝します。それはうまくいった。私は割り当てを追加することを忘れました: "あなたのクラスにDateTime型のDateOfBirthプロパティを追加してください。"私は最初の部分だけが必要でしたが、2番目の部分も見て私がさらに理解するのを助けました。ありがとう:) – Thinnling

+1

同様に 'GetFullName'メソッドをゲッターのみのプロパティ' FullName'に変換することができます – ClearLogic

+1

もちろん、 'Age'を計算プロパティーに変更すると(それは変更されますが、dateofbirthは決して変更されません) 'DateOfBirth'を通常の(計算されていない)プロパティに変更する必要があります。さもなければ、あなたは両方のプロパティを他のものからそれらの値を計算しようとし、無限ループを持つでしょう。 –

3

この:

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

ではありませんプロパティ、but a method。あなたは簡単にかかわらず、プロパティにそれを回すことができます。

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

はタイプがintではなく、必要なDateTimeあるので、あなたはおそらくまだ問題に実行されますproperties in C#

の説明については、マニュアルを参照してください。 .Year参照をスキップし、全体DateTime構造体を返し、最終的には、プロパティのシグネチャ更新:あなたはdateOfBirthのと呼ばれるメソッドを持って

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

を、代わりにそれは、このような性質でなければなりません:

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

お知らせ今度は.Dateを使用して、日付部分を取得し、時刻部分は取得しません。

関連する問題