我有一個包含靜態數量的對象的類。這個類需要經常與其他簡單的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