C# でクラスを IEnumerable にするにはどうすればいいですか? 質問する

C# でクラスを IEnumerable にするにはどうすればいいですか? 質問する

つまり、クラスとその中に汎用リストがありますが、これはプライベートです。

class Contacts
{
    List<Contact> contacts;
    ...
}

クラスを次のように動作させたいと思います:

foreach(Contact in contacts) .... ;

こんな感じ(動作しません):

Contacts c;
foreach(Contact in c) .... ;

上記の例では、Contactクラスのインスタンスcはcontacts(cのプライベートメンバー)からすべてのアイテムを返す必要があります。

どうすればいいですか? yield return 付きの IEnumerable にする必要があることはわかっていますが、どこでそれを宣言すればよいのでしょうか?

ベストアンサー1

IEnumerable インターフェイスを実装します。

class Contacts : IEnumerable<Contact>
{
    List<Contact> contacts;

    #region Implementation of IEnumerable
    public IEnumerator<Contact> GetEnumerator()
    {
        return contacts.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
    #endregion
}

おすすめ記事