我有两个名为Person
和Staff
的课程。 Person
类只保留字段和属性。 Staff
类实现IEnumarable
接口。我想做的是让这个课程变得可以。我将在Staff
上创建一个实例form_Load
类,然后迭代它。但我觉得这里有些不对劲。
public Person this[int index]
{
get { return Staff[index]; }
set { Staff[index] = value; }
}
这是我到目前为止所拥有的。我该如何解决这个问题?
public class Person
{
private int _age;
private string _name;
public int Age
{
get { return _age; }
set { _age = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public Person(int age, string name)
{
_age = age;
_name = name;
}
}
public class Staff : IEnumerable
{
private List<Person> list;
public Person this[int index]
{
get { return Staff[index]; }
set { Staff[index] = value; }
}
public Staff(Person person)
{
list = new List<Person>();
list.Add(person);
}
public IEnumerator GetEnumerator()
{
for (int i = 0; i < list.Count; i++)
{
yield return list[i];
}
}
}
答案 0 :(得分:2)
确实是语法错误。这可以工作:
static void Main(string[] args)
{
var staff = new Staff();
staff.AddPerson(new Person(12, "John Doe"));
staff.AddPerson(new Person(12, "Jande Doe"));
foreach (var person in staff)
{
Console.WriteLine(person.Name);
}
Console.ReadLine();
}
}
public class Person
{
public int Age { get; private set; }
public string Name { get; private set; }
public Person(int age, string name)
{
Name = name;
Age = age;
}
}
public class Staff : IEnumerable<Person>
{
private List<Person> staff = new List<Person>();
public void AddPerson(Person p)
{
this.staff.Add(p);
}
public IEnumerator<Person> GetEnumerator()
{
return this.staff.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.staff.GetEnumerator();
}
}
我的印象是你要通过员工班来列举人员的集合。您可以通过实现IEnumerable并返回人员列表的枚举器来实现。这就是我做的。 我实现了IEnumerable来返回一个强类型的枚举器并缩短了你的一些代码。希望它有所帮助。