Можем ли мы вычислить значение свойства класса на основе другого значения другого свойства того же класса? - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть класс с именем Person, который имеет свойства Name, DateOfBirth и Age.Name и DateOfBirth предоставляются при создании экземпляра класса, но я хочу, чтобы свойство Age вычислялось автоматически, как только создается экземпляр класса.Я знаю, как это сделать, используя Параметризованный конструктор , но, пытаясь понять всю мощь свойств, я попытался выполнить следующую программу, но она не дает ожидаемого результата.

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);    
        }
    }
}

Вывод, который я получаю,

enter image description here

Я ожидаю, что возраст будет 28. Помогите, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы пытаетесь прочитать свойство, не устанавливая его.Таким образом, вы можете сделать обе эти вещи в коде, как

get { return ((DateTime.Now - DateOfBirth).Days / 365); }
0 голосов
/ 23 сентября 2018

Кажется, вам нужен только для чтения возраст, в таком случае вам не нужно ничего устанавливать в свойстве Age, просто выполните:

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

Возможно, вы захотите посмотреть здесь и читайте немного больше о свойствах.
Кстати, как и @John указал относительно правильного расчета возраста (имея в виду високосные годы, вы можете захотеть взглянуть здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...