つまり、クラスとその中に汎用リストがありますが、これはプライベートです。
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
}