我们可以根据同一个类的另一个属性的另一个值来计算类属性的值吗?

Mer*_*rmi 0 c# properties

我有一个叫做Person属性的类Name,DateOfBirthAge.Name并且DateOfBirth在创建类实例时提供但我希望在创建类的实例时Age自动计算属性.我知道如何使用Parametrized Constructor来做到这一点,但是当我试图理解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);    
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

在此输入图像描述

我期待年龄为28岁.请帮助.

Rik*_*ika 5

看来你需要一个只读年龄,如果是这样,你不需要在Age属性中设置任何东西,只需:

    public int Age
    {
        get { 
               return DateTime.Now.Year - DateOfBirth.Year;
            }
    }
Run Code Online (Sandbox Code Playgroud)

您可能还想看看这里,并阅读有关属性的更多信息.
顺便说一下@John指出正确计算年龄(意味着考虑到闰年,你可能想看看这里)