Как создать свойство для параметров конструктора класса? C#
Класс и конструктор, и метод:
class Worker
{
public Worker(double p)
{
this.p = p;
}
public double p;
private double k = 1.2;
public void Count()
{
double salary = p * k;
Console.WriteLine($"Зарплата {lastname} составляет {salary}");
}
}
Свойство (не работает):
public double P
{
get { return p; }
set { if (p > 0) { p = value; } else { Console.WriteLine("Зарплата не может быть отрицательной"); } }
}
Создание объекта:
Worker John = new Worker (-1000);
Как запретить передавать отрицательные числа при создании объекта?
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
private double p;
public Worker(double p)
{
P = p;
^
}
плюс то, что в комментарии:
public double P
{
get { return p; }
set {
if (value <= 0)
throw new InvalidArgumentException("Зарплата должна быть положительной.");
p = value;
}
}
Автор решения: Mr.AntonDer
Или же можно вот так
→ Ссылка
Должно работать:
public double P
{
get { return p; }
set { if (value > 0) { p = value; } else { Console.WriteLine("Зарплата не может быть отрицательной"); } }
}
У вас не работало, потому что вы дёргали старое значение, а не значение которое передаётся
Или же можно вот так
public Worker(double p)
{
if(p>0)
{
this.p = p;
}
}