我有2个类,在Persons类中我想添加使用foreach循环遍历Person集合的名称属性的能力,如下所示:
foreach (string name in Persons.Names)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
这些是我的课程:
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]; }
}
}
Run Code Online (Sandbox Code Playgroud)
第一个循环可以实现如下:
foreach (Person p in Persons)
{
// do something with p.Name
}
Run Code Online (Sandbox Code Playgroud)
您可以实现以下属性:
public IEnumerator<string> Names
{
get
{
foreach (Person p in persons)
{
yield return p.Name;
}
}
}
Run Code Online (Sandbox Code Playgroud)
或使用Linq:
public IEnumerator<string> Names
{
get
{
return persons.Select(p => p.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
public IEnumerable<string> Names
{
get
{
foreach (Person p in persons)
{
yield return p.Name;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1613 次 |
| 最近记录: |