Svar: Objekten som kan traverseras av foreach måste vara samlings- eller arrayobjekt, vilka är av den typ som implementerar supergränssnittet IEnumerator eller den deklarerade GetEnumerator-metoden Q: Men när jag vanligtvis använder Foreach In använder jag det direkt, och det är inga problem. Får jag fråga, varför är det så? Om du vill implementera typen av supergränssnittet IEnumerator eller den deklarerade GetEnumerator-metoden som ställs i frågan, vad bör du göra? Tack Svar: När vi använder foreach in använder vi vanligtvis en systemdefinierad samlingsklass (som implementerar ICollection-gränssnittet). Till exempel arrayList, stringDictionary, array, etc. Dessa paketeras av plattformen och är nära att implementera IEnumerator-gränssnittet. För att klassen du skriver ska kunna göra foreach samtidigt måste du implementera gränssnittet när du skriver klassen. Detta möjliggör varje genomgång efteråt. Definiera till exempel en klass av personer och implementera IEnumerator-gränssnittet. Om det finns en array People[] tempPeople, kan du använda: foreach( p i tempPeople){ console.writeline(p.name); Detta eliminerar besväret med att använda for-loopar. När det gäller hur man implementerar Iemumerator-gränssnittet. Kolla bara MSDN. Du kan också leta efter en tjockare bok.
|