簡體   English   中英

單個C#類的多個枚舉器

[英]Multiple Enumerators for a Single C# Class

我創建了一個由間隔組成的數據結構。 數據結構自然應該有一個枚舉所有間隔的枚舉器,但我想暴露兩個不同的枚舉器,它們按不同的順序枚舉間隔。

其中一個枚舉器非常快地枚舉間隔,但是有些任意順序。 另一個按字典順序列舉它們,但有點慢(取決於間隔)。 根據您嘗試實現的目標,一個普查員可能更喜歡另一個。

有沒有辦法允許用戶決定應該在foreach循環中使用哪個枚舉器? 如果沒有,我可以很容易地擁有一個用於在枚舉器之間切換的屬性,或者構造函數可以采用一個額外的參數。 但我有點害怕它會導致更多的混亂而不是方便。

我是否應該為另一個枚舉器創建一個返回IEnumerator的單獨方法? 這個奇怪的問題是否有最佳實踐?

公開兩個返回不同枚舉數的屬性可能是正確的方法。 而不是實現IEnumerable本身的數據結構(我猜這個),創建兩個不同的IEnumerator實現,並為每個實現從主類中暴露出來。 然后使用代碼很簡單:

foreach( var item in data.FastEnumerator )
{
    ....

foreach( var item in data.LexicalEnumerator )
{
    ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM