Как создать проверку в setter
Подскажите почему код не работает.
class Person
{
public int age;
public int Age
{
set
{
if (value < 15)
{
Console.WriteLine("You're not old enough yet");
}
age = value;
}
get
{
return age;
}
}
}
static void Main(string[] args)
{
Person per = new Person();
per.age = 13;
Console.WriteLine(per.Age);
Console.ReadLine();
}
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
public int age;
public int Age
{
// ...
}
// ...
Person per = new Person();
per.age = 13;
Вы напрямую пишете в поле age, поэтому проверка, которую вы написали в свойстве Age не работает. Нужно запретить писать напрямую в поле age (если бы вы это сделали сразу, у вас бы вышла ошибка и вы бы поняли в чём тут дело) и писать значение в свойство Age, тогда проверка сработает:
private int age; // приватное поле, снаружи в него писать нельзя
public int Age
{
// ...
}
// ...
Person per = new Person();
per.Age = 13; // пишем туда, куда разрешено - в свойство, а не в поле
Кроме того, по логике, если значения < 15 являются недопустимыми, нужно устанавливать значение в сеттере только если значение является допустимым:
if (value < 15)
{
Console.WriteLine("You're not old enough yet");
}
else
{
age = value; // проверка пройдена, можно присваивать
}