Resposta: Objetos que podem ser percorridos por foreach devem ser objetos collection ou array, que são do tipo que implementa o IEnumerator superinterface ou o método declarado GetEnumerator Q: Mas quando normalmente uso foreach in, uso diretamente, e não há problema. Posso perguntar, por que isso acontece? Se você quiser implementar o tipo de super interface IEnumerator ou o método declarado GetEnumerator como perguntado, o que deve fazer? Obrigado Resposta: Ao usar foreach in, geralmente usamos uma classe de coleção definida pelo sistema (implementando a interface ICollection). Por exemplo, arrayList, stringDictionary, array, etc. Esses são empacotados pela plataforma e estão próximos de implementar a interface IEnumerator. Para que a classe que você escreve possa ser aplicada ao mesmo tempo, você deve implementar a interface ao escrever a classe. Isso permite a travessia de cada um depois. Por exemplo, defina uma classe de pessoas e implemente a interface do IEnumerator. Se houver um array People[] tempPeople, então você pode usar: foreach( p in tempPeople){ console.writeline(p.name); Isso elimina o problema de usar loops for. Quanto a como implementar a interface do Iemumerator. É só verificar o MSDN. Você também pode procurar um livro mais grosso.
|