Heim >Backend-Entwicklung >C#.Net-Tutorial >Detaillierte Erläuterung des Beispielcodes für den C#-Index und den Iterator
C# einfaches Beispiel für Iteratoren und Indizes
Iterator ist eine Designidee und ein Designmuster. In C# kann ein Iterator einfach implementiert werden, d. h. IenumeratorSchnittstelle . Zum Beispiel habe ich eine Klasse student und möchte jetzt eine studentCollection kapseln. Der Code sieht so aus:
StudentKategorie:
StudentCollection Klasse:
Sehr einfache Kapselung, nur Es gibt ein Feld, nämlich studentList, der Typ von ist list1f479e44f2c9bd2301ecbd2b69e4d7bf, das Ienumerator Ich habe studentList für den Code der -Schnittstelle verwendet, da diese Klasse diese Schnittstelle implementiert, also verwenden Sie sie einfach. Auf diese Weise kann ich studentCollection mit foreach durchlaufen:
Codebeschreibung:
1. newEin studentCollection-Objekt und verwenden Sie einen Initialisierer, um jedes einzeln zu initialisieren ein SchülerObjekt
2. 🎜>Verwenden Sie foreach um jeden Studenten zu durchlaufen 3.
Ermitteln Sie den Namen jeder Person und fügen Sie ihn zu einer Zeichenfolge hinzu. Anschließend wird ein Eingabeaufforderungsfeld mit der Anzeige angezeigt
Gibt es eine andere Möglichkeit, die Ienumerator-Schnittstelle zu implementieren? Die Antwort ist ja, der Code lautet wie folgt:
public IEnumerator GetEnumerator() { foreach (Student s in studentList) { yield return s;////使用yield关键字实现迭代器 } }
Bezüglich Indexsymbolen und Indexsymbolüberladung:
Aufmerksame Leser haben das vielleicht in studentCollection Im Kurs habe ich zwei Indexsymbole definiert:
////Zugriff
public Student this[int index] { get { return studentList[index]; } }
////Zugriff über Schülernamen
public Student this[string name] { get { return studentList.Single(s => s.StudentName == name); } }
Der Indexüberladungsmechanismus macht die Kapselung flexibler und leistungsfähiger.
Das Obige ist eine detaillierte Erklärung des Beispielcodes von c#-Index und Iterator Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!