我有一个名为Person
的类,它具有属性Name
,DateOfBirth
和Age
。创建类实例时将提供Name
和DateOfBirth
,但我希望创建类实例后立即自动计算Age
属性。我知道如何使用 参数化构造函数 来执行此操作,但是当我试图了解Properties的功能时,我尝试了以下程序,但未给出预期的输出。
using System;
namespace Property
{
class Person
{
#region private varaibles
private int _age;
#endregion
#region properties
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
public int Age
{
get { return _age; }
set { _age = (DateTime.Now - DateOfBirth).Days / 365; }
}
#endregion properties
}
class Program
{
static void Main(string[] args)
{
Person P = new Person() { Name = "Merin Nakarmi", DateOfBirth = new DateTime(1990, 1, 12) };
Console.WriteLine("{0}, whose Date Of Birth is {1} is {2} years old!", P.Name, P.DateOfBirth, P.Age);
}
}
}
我得到的输出是
我希望年龄在28岁。请帮忙。
答案 0 :(得分:5)
似乎您需要一个只读年龄,如果是这种情况,则无需在Age属性中设置任何内容,只需执行以下操作即可:
public int Age
{
get {
return DateTime.Now.Year - DateOfBirth.Year;
}
}
您可能还想看看here并阅读一些有关属性的信息。
顺便说一下,@ John也指出了正确计算年龄的方法(意味着考虑taking年,您可能希望看看here)
答案 1 :(得分:3)
您正在尝试读取属性而不进行设置。因此,您可以使用
这样的代码来完成这两项操作get { return ((DateTime.Now - DateOfBirth).Days / 365); }