Как создать свойство для параметров конструктора класса? 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;
        }
    }
→ Ссылка