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

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

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

Создаем класс Person, в нем есть свойство - пол(sex), когда я создаю экземпляр класса, и передю ему значения этого свойства, то остальные свойства(LastName, FirstName) должны задать соответственные имена, в зависимости от пренадлежности к полу человека. Не понимаю почему так.
Листинг программы
  1. internal class People
  2. {
  3. string _firstName;
  4. string _lastName;
  5. int _age;
  6. string _sex;
  7. internal string Sex
  8. {
  9. get { return _sex; }
  10. set
  11. {
  12. if (((value.Trim()).ToLower() == "man") || ((value.Trim()).ToLower() == "woman")) _sex = value;
  13. else
  14. {
  15. _sex = "man";
  16. Console.WriteLine("Value = Man is added, because string value is fail");
  17. }
  18. }
  19. }
  20. internal string FirstName
  21. {
  22. get{return _firstName;}
  23. set
  24. {
  25. if (value == null) // если передем null то устанавливастя соотв значения имен
  26. {
  27. if (Sex == "man") _firstName = "Emanuel";
  28. if (Sex == "woman") _firstName = "Angelina";
  29. }
  30. else
  31. {
  32. _firstName = value;
  33. }
  34. }
  35. }
  36. internal string LastName
  37. {
  38. get { return _lastName; }
  39. set
  40. {
  41. if (value == null) // тоже что и с именем
  42. {
  43. if (Sex == "man") _lastName = "Newton";
  44. if (Sex == "woman") _lastName = "Parker";
  45. }
  46. else
  47. {
  48. _lastName = value;
  49. }
  50. }
  51. }
  52. internal int Age
  53. {
  54. get { return _age; }
  55. set
  56. {
  57. if (value > 0) _age = value;
  58. else
  59. {
  60. _age = 1;
  61. }
  62. }
  63. }
  64. public People() : this("Man", "Antony", "Chikken", 23) { }
  65. public People(string Sex) : this(Sex, null, null, 23) { } // передаю соответсвенные значение null, но не задает имена, которые стоят при условии в свойствах.
  66. public People(int Age) : this("Man","Howard", "Chikken", Age) { }
  67. public People(string Sex, string FirstName, string LastName, int Age)
  68. {
  69. this.Sex = Sex; this.FirstName = FirstName; this.LastName = LastName; this.Age = Age;
  70. }
  71. public override string ToString()
  72. {
  73. return string.Format("Sex is {0}, FirstName is {1}, LastName is {2}, Age is {3}", Sex, FirstName, LastName, Age);
  74. }
  75. }
  76. class Program
  77. {
  78. static void Main(string[] args)
  79. {
  80. People p = new People("woman ");
  81. Console.WriteLine(p.ToString());
  82. Console.ReadKey();
  83. }
  84. }
  85. }

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

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

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы