为单个员工分配一个十进制值 c#

Assigning a decimal value to an individual employee c#

我目前正在制作工资单系统。我有 5 或 6 名员工,他们每个人都有不同的小时费率,我如何为每个人分配小时费率?!

目前我有一些类似的东西(这是不正确的)...

string[] employeeID = {"Brian", "Richard", etc....};
decimal hourlyPay = 0.0M;

if (employeeID == "Brian")
{
  hourlyPay = 8.00M;
}

谢谢!

您可以创建字典,

var rates = new Dictionary<string, decimal>();

rates.Add("Brian",8.00M);
rates.Add("Richard",10.50M);

或者在更紧凑的版本中,使用集合初始值设定项:

var rate = new Dictionary<string, decimal>
{
    {"Brian", 8.00M},
    {"Richard",10.50M}
};

使用字典,这也是稍后通过使用 employeeId 获取每个员工的小时费率的最有效方法。这是一个 O(1) 操作。

如果您不喜欢这种方法,您可以声明一个名为 Employee 的 class,如下所示:

public class Employee
{
    public string Id { get; set; }
    public decimal HourlyRate { get; set; }

    public Employee(string id, decimal hourlyRate)
    {
        Id = id;
        HourlyRate = hourlyRate;
    }
}

那么您可以定义一个包含 Employee 个对象的数组,而不是包含员工 ID 的数组。

var employees = new []
{
    new Employee("Brian", 8.00M),
    new Employee("Richard", 10.50M)
}

这样,每次创建员工时,您都必须提供一个 Id 和一个小时费率。

How would I display my results?

既然你选择了 class 的解决方案,我会选择重载 ToString 方法。

public class Employee
{
    // The previous declarations, please see above.

    public string override ToString()
    {
        return String.Format("Staff Name: {0}, Hourly Rate: {1}", Id, HourlyRate);
    } 
}

因此,当您调用 employees[0].ToString() 时,您会得到以下字符串:

"Staff Name: Brian, Hourly Rate: 8.00"

试试这个代码:

string[] employeeID = {"Brian", "Richard"};
decimal hourlyPay = 0.0M;
for (int i = 0; i < employeeID.Length; i++)
{
    if (employeeID[i] == "Brian")
    {
        hourlyPay = 8.00M;
    }

}
Console.WriteLine(hourlyPay);

始终使用循环遍历数组中的所有元素,并通过索引访问它们。填充、修改元素时,始终使用循环。

我想您很可能需要为您的员工分配其他内容(例如:每周完成的小时数、地址等),因此不要将所有内容都映射到字典或其他数组中,而是制作一个 Class 保存您的员工信息:

public class Employee 
{
    public string EmployeeId { get; set; }
    public decimal HourlyPay { get; set; }
}

有了 class,您可以保持模型的可扩展性,如果您需要将该信息保存在某个地方,可以很容易地对其进行序列化或将其映射到数据库 table。

您可以将所有员工保存在一个列表中。要用一个值初始化它们,您可以这样做:

List<Employee> employees = new List<Employee>();
employees.Add(new Employee { EmployeeId = "Brian", HourlyPay = 8.0M });

后期设置信息,只需获取对应ID的员工并设置其时薪即可:

employees.FirstOrDefault(e => e.EmployeeId == "Brian").HourlyPay = 8.0M;