如果在C#中设置最低工资的语句

本文关键字:低工资 语句 设置 如果 | 更新日期: 2023-09-27 18:24:31

我正试图在构造函数中设置一个属性,当输入任何小于7.50m的值时,该属性将存储7.50m的最小值。属性已经声明,我只需要这个if语句的帮助,一切都会编译,但当输入值<7.5,它不起作用。。。

public decimal PayRate
{
    get
    {
        return payRate;
    }
    set
    {  
        if (value <= 7.50m)
            payRate = 7.50m;
        else
            payRate = value;
    }
}

编辑:这是输入值的代码。。。编辑2:命名空间声明之后的代码,除了添加一个属性外,我不能更改任何内容。它没有格式化。

static void Main(string[] args)
    {
        Employee e1 = new Employee("Chevy", "Jack", 'A', "987654321", 1.20m); }

以及定义所有内容的命名空间。

    public Employee(string lName, string fName, char mi, string ss, decimal pay)
    {
        firstName = fName;
        lastName = lName;
        MiddleInitial = mi;
        SSN = ss;
        payRate = pay;
    }

如果在C#中设置最低工资的语句

我假设您有这样的东西。

    private decimal payRate;
    public decimal PayRate
    {
        get { return payRate; }
        // i avoid use of "if else" in situations like these
        set { payRate = (value <= 7.50m) ? 7.50m : value; }
    }

当你分配时,它应该可以正常工作

    PayRate=6.5m // or any value less than 7.5

但是如果你指定

    payRate=6.5m // this won't work because you are assigning value directly to private  property.

这是行不通的,因为你是直接给私有财产赋值。

编辑:如果设置,则不会调用您的设置访问器

    payRate=pay

构造函数内部。您可以从构造函数参数中删除pay,并在稍后创建Employee实例时设置它。

    // create employee 
    Employee e1 = new Employee("Ford", "Joe", 'S', "123456789");
    // set the pay here
    e.PayRate=1.75m;   // this will invoke the set accessor and set value to 7.5m

您的setter被设计破坏了。setter应该将属性设置为赋值,或者抛出异常。

你应该写:

public static readonly Decimal MinimumWage = 7.50m;
...
set
{  
    if(value<=MinimumWage)
      throw new ArgumentException(string.Format("Wage {0} must be at least the minimum wage of {1}",value,MinimumWage));
    payRate = value;
}