Свойство не изменяет значение, переданное конструктором в ходе создания экземпляра класса - C#

Узнай цену своей работы

Формулировка задачи:

Создаем класс Person, в нем есть свойство - пол(sex), когда я создаю экземпляр класса, и передю ему значения этого свойства, то остальные свойства(LastName, FirstName) должны задать соответственные имена, в зависимости от пренадлежности к полу человека. Не понимаю почему так.
    internal class People
    {
        string _firstName;
        string _lastName;
        int _age;
        string _sex;
 
        internal string Sex
        {
            get { return _sex; }
            set
            {
                if (((value.Trim()).ToLower() == "man") || ((value.Trim()).ToLower() == "woman")) _sex = value;
                else
                {
                    _sex = "man";
                    Console.WriteLine("Value = Man is added, because string value is fail");
                }
 
            }
        }
 
        internal string FirstName
        {
            get{return _firstName;}
            set
            {
                if (value == null) // если передем null то устанавливастя соотв значения имен
                {
            if (Sex == "man") _firstName = "Emanuel";
                    if (Sex == "woman") _firstName = "Angelina";
                }
                else
                {
                    _firstName = value;
                }
            }
        }
 
        internal string LastName
        {
            get { return _lastName; }
            set
            {
                if (value == null) // тоже что и с именем
                {
                    if (Sex == "man") _lastName = "Newton";
                    if (Sex == "woman") _lastName = "Parker";
                }
                else
                {
                    _lastName = value; 
                }
            }
        }
 
        internal int Age
        {
            get { return _age; }
            set
            {
                if (value > 0) _age = value;
                else
                {
                    _age = 1; 
                }
            }
        }
 
        public People() : this("Man", "Antony", "Chikken", 23) { }
        public People(string Sex) : this(Sex, null, null, 23) { } // передаю соответсвенные значение null, но не задает имена, которые стоят при условии в свойствах.
        public People(int Age) : this("Man","Howard", "Chikken", Age) { }
        public People(string Sex, string FirstName, string LastName, int Age)
        {
            this.Sex = Sex; this.FirstName = FirstName; this.LastName = LastName; this.Age = Age;
        }
 
        public override string ToString()
        {
            return string.Format("Sex is {0}, FirstName is {1}, LastName is {2}, Age is {3}", Sex, FirstName, LastName, Age);
        }
  }
 
 class Program
    {
        static void Main(string[] args)
        {
            People p = new People("woman ");
            Console.WriteLine(p.ToString());
            Console.ReadKey();
        }
    }
 
}

Решение задачи: «Свойство не изменяет значение, переданное конструктором в ходе создания экземпляра класса»

textual
Листинг программы
        static void Main(string[] args)
        {
            People p = new People("woman");
            Console.WriteLine(p.ToString());
            Console.ReadKey();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы