为单个员工分配一个十进制值 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;
我目前正在制作工资单系统。我有 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;