天儿真好内,如何通过排序列表遍历一个类
在简单的代码示例下面我使用一个简单列表来存储雇员对象内的多个Employee对象。我想将列表更改为SortedList,其中Employee.Number用作TKey,这样foreach循环将始终按升序Employee.Number的顺序打印员工,并使Employees类中的Item方法将检索Employee的Employee.Number而不是它在List中的索引位置。
我认为这将是微不足道的,但我似乎没有能够从Employees类以外的SortedList迭代的语法正确......?所以,如果有人可以修改我的示例代码以向我展示方式,我将非常感激。
感谢你们的帮助,
马丁。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
clsEmployees Employees = new clsEmployees();
Employees.Add(new clsEmployee(3, "Fred"));
Employees.Add(new clsEmployee(5, "Jane"));
Employees.Add(new clsEmployee(2, "Bob"));
Employees.Add(new clsEmployee(1, "Sarah"));
foreach (clsEmployee Employee in Employees)
{
Console.WriteLine("{0} {1}", Employee.Number, Employee.Name);
}
Console.ReadLine();
}
}
public class clsEmployee
{
public int Number;
public string Name;
public clsEmployee(int SetNumber, string SetName)
{
Number = SetNumber;
Name = SetName;
}
}
public class clsEmployees : IEnumerable<clsEmployee>
{
private List<clsEmployee> EmployeeList;
public clsEmployees() { EmployeeList = new List<clsEmployee>(); }
IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
public IEnumerator<clsEmployee> GetEnumerator() { return EmployeeList.GetEnumerator(); }
public void Add(clsEmployee NewEmployee) { EmployeeList.Add(NewEmployee); }
public clsEmployee Item(int Index) { return EmployeeList[Index]; }
}
}
非常感谢,您的答案完全符合您的要求。这是你的第二点,我坚持 - 返回EmployeeList.VALUES.GetEnumerator(); - 我只是无法看到...。的 –
非常感谢,您的答案完全符合要求。这是你的第二点,我坚持 - 返回EmployeeList.VALUES.GetEnumerator(); - 我无法看到。至于你,如果它的功课质疑,让我向你保证,这不是(当然,它的工作在家里,而不是作业的方式,你的意思是)其实我是一个电子硬件工程师在我50年代。我在一百万年前削减了Microsoft Level II Basic的编程牙齿。很久以后我做了很多VB 3,5和6,这些天,其主要是在嵌入式系统C和C++的,但偶尔我有点C#涉猎... –
所以我的代码示例是故意非常简单的例子,只是足以说清楚我想做什么。我没有展示我的非工作简化示例,因为我太困惑了(或者太尴尬)了。无论如何,真正的类是“clsComponentRequestRecord”,大约有400行并且正在增长。是的,我的命名约定要求VB - 很难教老狗新的技巧......再次感谢Martin。 –