如果在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;
}
我假设您有这样的东西。
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;
}