使用枚举的对象c#
对不起,我是相当新的枚举,我试图在逻辑上下文中实现它。在我的Employee类中,我创建了一些员工对象。我还为Employee对象分配状态创建了一个枚举。我的目标是创建一个员工列表,并为每个员工分配一个分配状态,最后通过列表打印员工数据和员工分配状态。使用枚举的对象c#
我想知道:
1 - 这是一个很好的情况下使用枚举? 2 - 如何为每个员工分配工作分配状态?例如,如果我想Emp1有AssignmentStatus.Assigned我应该如何应用此语法明智?
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsCurrentlyEmployed { get; set; }
enum AssignmentStatus
{
Assigned,
Idle,
Trainee,
NotDefined
}
public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed)
{
Id = id;
FirstName = firstName;
LastName = lastName;
IsCurrentlyEmployed = IsCurrentlyEmployed;
}
public Employee Employees()
{
Employee Emp1 = new Employee(1, "John", "Smith", true);
Employee Emp2 = new Employee(2, "Kevin", "Moore", true);
Employee Emp3 = new Employee(3, "Eric", "Johnson", false);
Employee Emp4 = new Employee(4, "Michell", "McDevour", true);
Employee Emp5 = new Employee(5, "Henry", "Jones", true);
Employee Emp6 = new Employee(6, "Sarah", "Holmes", true);
List<Employee> listEmployees = new List<Employee>();
}
Thnk你
1 - 这是一个很好的情况下使用枚举?
当然
2 - 如何分配与分配状态每位员工?
您需要公开AssignmentStatus
类型的公共财产或创建一个构造函数来做到这一点
例如:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsCurrentlyEmployed { get; set; }
public AssignmentStatus Status { get; set; }
enum AssignmentStatus
{
Assigned,
Idle,
Trainee,
NotDefined
}
public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, AssignmentStatus assignmentStatus)
{
Id = id;
FirstName = firstName;
LastName = lastName;
IsCurrentlyEmployed = IsCurrentlyEmployed;
this.Status = assignmentStatus;
}
public List<Employee> Employees()
{
Employee Emp1 = new Employee(1, "John", "Smith", true, AssignmentStatus.Assigned);
Employee Emp2 = new Employee(2, "Kevin", "Moore", true, AssignmentStatus.Assigned);
Employee Emp3 = new Employee(3, "Eric", "Johnson", false, AssignmentStatus.Assigned);
Employee Emp4 = new Employee(4, "Michell", "McDevour", true, AssignmentStatus.Assigned);
Employee Emp5 = new Employee(5, "Henry", "Jones", true, AssignmentStatus.Assigned);
Employee Emp6 = new Employee(6, "Sarah", "Holmes", true, AssignmentStatus.Assigned);
List<Employee> listEmployees = new List<Employee>();
listEmployees.Add(Emp1);
listEmployees.Add(Emp2);
listEmployees.Add(Emp3);
listEmployees.Add(Emp4);
listEmployees.Add(Emp5);
listEmployees.Add(Emp6);
return listEmployees;
}
我太固定的Employees()
方法。虽然我不建议在Employee
这个类中放置这样的代码,因为它没有逻辑意义,但为什么Employee
要维护一个Employees
的列表?
然后,您可以设置像这样的状态:
Employee e = new Employee(0, "", "", false, Employee.AssignmentStatus.Assigned);
或者
e.Status = Employee.AssignmentStatus.Assigned;
现在Employees()返回一个空的列表 – Pavenhimself 2014-09-22 09:22:17
@Pavenhimself比之前编译的更好。 – DGibbs 2014-09-22 09:25:05
的确如此。看起来不错 – Pavenhimself 2014-09-22 09:25:31
- 是的,这是用枚举
-
您需要状态的属性可以设置它为每个员工
公众的好方案AssignmentStatus状态{get;组; }
您应该使用枚举
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsCurrentlyEmployed { get; set; }
public AssignmentStatus EmployeeAssignmentStatus { get; set; }
enum AssignmentStatus
{
Assigned,
Idle,
Trainee,
NotDefined
}
public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, AssignmentStatus status)
{
Id = id;
FirstName = firstName;
LastName = lastName;
IsCurrentlyEmployed = IsCurrentlyEmployed;
EmployeeAssignmentStatus = status;
}
public List<Employee> Employees()
{
Employee Emp1 = new Employee(1, "John", "Smith", true, AssignmentStatus.Assigned);
Employee Emp2 = new Employee(2, "Kevin", "Moore", true, AssignmentStatus.Idle);
Employee Emp3 = new Employee(3, "Eric", "Johnson", false, AssignmentStatus.Trainee);
Employee Emp4 = new Employee(4, "Michell", "McDevour", true, AssignmentStatus.NotDefined);
Employee Emp5 = new Employee(5, "Henry", "Jones", true, AssignmentStatus.NotDefined);
Employee Emp6 = new Employee(6, "Sarah", "Holmes", true, AssignmentStatus.NotDefined));
List<Employee> listEmployees = new List<Employee>();
listEmployees.add(Emp1);
listEmployees.add(Emp2);
listEmployees.add(Emp3);
listEmployees.add(Emp4);
listEmployees.add(Emp5);
listEmployees.add(Emp6);
return listEmployees;
}
我已经收拾你的代码,并显示如何分配分配状态。 你会在代码中找到解释更多的评论。
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsCurrentlyEmployed { get; set; }
public eAssignmentStatus AssignmentStatus { get; set; }
/// <summary>
/// Defines the assignment status for the employee. Prefixed 'e' to denote it's an enum and avoid clashes with the property name.
/// </summary>
public enum eAssignmentStatus
{
NotDefined,
Assigned,
Idle,
Trainee
}
/// <summary>
/// Main constructor
/// </summary>
/// <param name="id"></param>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
/// <param name="isCurrentlyEmployed"></param>
public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed)
{
Id = id;
FirstName = firstName;
LastName = lastName;
IsCurrentlyEmployed = IsCurrentlyEmployed;
}
/// <summary>
/// Constructor overload with eAssignmentStatus parameter
/// </summary>
/// <param name="id"></param>
/// <param name="firstName"></param>
/// <param name="lastName"></param>
/// <param name="isCurrentlyEmployed"></param>
/// <param name="assignmentStatus"></param>
public Employee(int id, string firstName, string lastName, bool isCurrentlyEmployed, eAssignmentStatus assignmentStatus)
: this(id, firstName, lastName, isCurrentlyEmployed)
{
AssignmentStatus = assignmentStatus;
}
/// <summary>
/// Creates some employee objects, however, I would recommend putting this method inside another 'Factory' class, as you'd have to create
/// an instance of Employee in order to call "Employees()"
/// </summary>
/// <returns>Now returns a list as this is what your method name implies.</returns>
public List<Employee> Employees()
{
Employee Emp1 = new Employee(1, "John", "Smith", true, eAssignmentStatus.Assigned);
Employee Emp2 = new Employee(2, "Kevin", "Moore", true, eAssignmentStatus.Idle);
Employee Emp3 = new Employee(3, "Eric", "Johnson", false, eAssignmentStatus.Trainee);
Employee Emp4 = new Employee(4, "Michell", "McDevour", true);
Employee Emp5 = new Employee(5, "Henry", "Jones", true);
Employee Emp6 = new Employee(6, "Sarah", "Holmes", true);
List<Employee> listEmployees = new List<Employee>();
return listEmployees;
}
}
我知道我应该按照你的建议将enum设置为public。谢谢 – koffe14 2014-09-22 09:33:32
请张贴一些代码给我们审查和展示一些更多的研究。 – krisdyson 2014-09-22 09:13:02
我的appologies,似乎我没有发布的代码。 – koffe14 2014-09-22 09:14:50
你定义了一个'enum'类型,但你也必须实际使用它。添加一个'AssignmentStatus'类型的属性。顺便说一句,在.NET中,也可以调用该属性AssignmentStatus。 – 2014-09-22 09:17:36