我有一个包含静态数量的对象的类。这个类需要经常与其他简单的List对象进行“比较”。如何实现IEnumerable?
public partial class Sheet
{
public Item X{ get; set; }
public Item Y{ get; set; }
public Item Z{ get; set; }
}
这些项目显然不会是“X”“Y”“Z”,例如这些只是通用名称。问题在于,由于需要做什么的性质,列表不起作用;即使这里的所有内容都是Item类型。它就像是一个非常具体的事情清单,必须在代码和运行时测试。
这工作都很好,这不是我的问题。我的问题是迭代它。例如,我想要执行以下操作...
List<Item> UncheckedItems = // Repository Logic Here.
UncheckedItems包含所有可用项目;而CheckedItems是Sheet类实例。 CheckedItems将包含从未选中移到检查的项目;但是由于存储系统的性质,移动到Checked的项目不能从Unchecked中删除。我只是想遍历“Checked”并从Unchecked列表中删除已经在“Checked”中的任何内容。
所以很自然地,这将是一个正常的列表。
foreach(Item item in Unchecked)
{
if(Checked.Contains(item))
Unchecked.Remove(item);
}
但是由于“Sheet”不是“List”,我不能这样做。所以我想实现IEnumerable,以便我可以。有什么建议么?我从来没有直接实现过IEnumerable,我对从何处开始感到困惑。
您也可以将这些yield语句直接放在GetEnumerator方法中。 – 2010-05-07 15:10:38
@Steve - 现在很酷。 – ChaosPandion 2010-05-07 15:15:40
@ChaosPandion - 即使对象被返回,它如何被移除?这个问题也不是如何去除对象? – Prashant 2010-05-07 15:23:12