Ech*_*lon 1 .net c# yield-return c#-4.0
我有一个项目列表('sections'),它有一个getter和一个setter.这些"部分"中的每一个都有一个"项目"列表.我想提供一个yield return属性来将'Items'属性公开为包含类的IEnumerable.我只是不能正确地得到语法.我在这里需要另一个循环还是会迭代太多次?
public virtual IList<ISection> Sections{ get; set; }
public virtual IEnumerable<IItem> Sections {
get{
foreach (var sect in Sections) {
// will this iterate too many times if I add an additional loop?
yield return sect.Items
}
}
}
Run Code Online (Sandbox Code Playgroud)
你是对的; 额外的循环应该做你想要的 - 虽然你不会从调用代码知道该项属于哪个部分.因此,如果这是一项要求,您可能需要重新考虑您的代码.
public virtual IEnumerable<IItem> Sections {
get{
foreach (var sect in Sections) {
foreach (var item in sect.Items) {
yield return item;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |