Risposta: Gli oggetti che possono essere attraversati da foreach devono essere oggetti collection o array, che sono del tipo che implementa il superinterface IEnumerator o il metodo dichiarato GetEnumerator Q: Ma quando di solito uso foreach in, lo uso direttamente e non ci sono problemi. Posso chiedere, perché? Se vuoi implementare il tipo di IEnumerator super interface o il metodo dichiarato GetEnumerator come richiesto nella domanda, cosa dovresti fare? Grazie Risposta: Quando usiamo foreach in, di solito usiamo una classe di raccolta definita dal sistema (che implementa l'interfaccia ICollection). Ad esempio, arrayList, stringDictionary, array, ecc. Questi sono confezionati dalla piattaforma e sono vicini all'implementazione dell'interfaccia IEnumerator. Affinché la classe che scrivi possa essere eseguita contemporaneamente, devi implementare l'interfaccia durante la scrittura della classe. Questo permette di percorrere il foreach successivamente. Ad esempio, definisci una classe di persone e implementa l'interfaccia IEnumerator. Se esiste un array People[] tempPeople, allora puoi usare: foreach( p in tempPeople){ console.writeline(p.name); Questo elimina il problema di usare i for loop. Per quanto riguarda come implementare l'interfaccia Iemumerator. Controlla semplicemente l'MSDN. Puoi anche cercare un libro più spesso.
|