练习:将DateOfBirth属性添加到您的类

时间:2017-08-02 16:01:55

标签: c# .net

我正在做一个关于.Net Academy的教程系列,并遇到了一个问题。他们没有真正有用的帮助部分,所以我想知道这里是否有人可以帮助我。我的问题是我认为我已经完成了正确的代码,但是我收到了这个错误:

  

并非所有要求都得到满足      您必须声明名为DateOfBirth的DateTime属性

这是我的代码:

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()
    {

    }
}

3 个答案:

答案 0 :(得分: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 :(得分:2)

你应该将DateOfBirth声明为像这样的属性

public DateTime DateOfBirth {get; set;}

和年龄应该是一个计算的财产,而不是像这样

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

答案 2 :(得分:1)

你有一个名为DateOfBirth的方法,它应该是这样的属性:

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

注意现在使用.Date获取日期而不是时间部分。