State
クラスを実装することが可能かどうか疑問に思っていたIEnumerable<Person>
のでIEnumerable<City>
、foreachを介して州に住むすべての人々とすべての都市を取得できました。これを言ってもコンパイルされません:(Error 1 'ConsoleApplication1.City' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'
奇妙な)...これがコードです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Person
{
}
class City : IEnumerable<Person>
{
// City has citizens:
Person[] citizens;
IEnumerator<Person> IEnumerable<Person>.GetEnumerator()
{
foreach (Person p in citizens)
yield return p;
}
}
class State : IEnumerable<Person>, IEnumerable<City>
{
// State has cities:
City[] cities;
IEnumerator<Person> IEnumerable<Person>.GetEnumerator()
{
foreach (City c in cities)
foreach (Person p in c)
yield return p;
}
IEnumerator<City> IEnumerable<City>.GetEnumerator()
{
foreach (City c in cities)
yield return c;
}
}
class Program
{
static void Main(string[] args)
{
State s = new State();
foreach (Person p in s) ;
foreach (City c in s) ;
}
}
}