我有2个类,在Persons
类中,我希望使用foreach循环添加循环遍历Person集合的名称属性的功能,如下所示:
foreach (string name in Persons.Names)
{
// do something
}
我该怎么做?
这些是我的课程:
class Person
{
public string Name
{
get;
set;
}
public string Surname
{
get;
set;
}
}
class Persons : IEnumerable<Person>
{
List<Person> persons = new List<Person>();
public IEnumerator<Person> GetEnumerator()
{
foreach (Person p in persons)
{
yield return p;
}
}
System.Collections.IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public IEnumerator<string> Names
{
// implement looping through Name property of Person class
}
public Persons()
{
}
public void Add( Person p )
{
persons.Add(p);
}
public string this[int index]
{
get { return this[index]; }
}
}
答案 0 :(得分:7)
第一个循环可以实现如下:
foreach (Person p in Persons)
{
// do something with p.Name
}
您可以实现以下属性:
public IEnumerator<string> Names
{
get
{
foreach (Person p in persons)
{
yield return p.Name;
}
}
}
或使用Linq:
public IEnumerator<string> Names
{
get
{
return persons.Select(p => p.Name);
}
}
答案 1 :(得分:5)
public IEnumerable<string> Names
{
get
{
foreach (Person p in persons)
{
yield return p.Name;
}
}
}
答案 2 :(得分:2)
这个有用吗?
foreach (Person p in persons)
{
yield return p.Name;
}
干杯 的Matthias
答案 3 :(得分:1)