Γιατί βλέπουμε τη διεπαφή IEnumerable, μπορεί να πιστεύουμε ότι είναι καταπληκτική, στον γενικό προγραμματισμό, βασικά δεν μπορούμε να σκεφτούμε να τη χρησιμοποιήσουμε, αλλά όπως λέει και η παροιμία, η ύπαρξη είναι η αλήθεια, οπότε τι υπέροχα πράγματα μπορεί να μας φέρει; Για να το καταλάβουμε, ας ρίξουμε μια ματιά στον ορισμό του! Στο MSDN, όπως λέγεται, είναι μια δημόσια απαρίθμηση που υποστηρίζει απλές επαναλήψεις σε μη γενικές συλλογές. Με άλλα λόγια, για όλες τις διελεύσεις πίνακα, από το IEnumerable, τότε μπορούμε να χρησιμοποιήσουμε αυτήν τη δυνατότητα για να ορίσουμε μια κοινή μέθοδο που μπορεί να διασχίσει πίνακες. Για παράδειγμα: δημόσιο στατικό κενό Εκτύπωση (IEnumerable myList) { int i = 0; foreach (Αντικείμενο obj στο myList) { if (obj is Student)// Αυτή είναι η κρίση του τύπου, όπου ο μαθητής είναι μια τάξη ή δομή { Μαθητής s=(Μαθητής)obj; Console.WriteLine("\t[{0}]:\t{1}", i++, s.Sname); } αν (το obj είναι int) { Console.WriteLine("INT:{0}",obj); } } Console.WriteLine(); } Παραπάνω, μπορούμε να εκτελέσουμε πολλαπλές κρίσεις if στο foreach για να εκτελέσουμε αντίστοιχες λειτουργίες. Μια άλλη χρήση του IEnumerable είναι στα γενόσημα. Η υποβολή ερωτημάτων σε έναν πίνακα με έκφραση λάμδα έχει ως εξής: Λίστα<string> φρούτων = νέα λίστα<string> { "μήλο", "φρούτο του πάθους", "μπανάνα", "μάνγκο", "πορτοκάλι", "μύρτιλο", "σταφύλι", "φράουλα" }; Ερώτημα λίστας<string> = φρούτα. Όπου(φρούτο => φρούτο. Μήκος < 6). ToList(); Ερώτημα με δυνατότητα αρίθμησης<string> = φρούτα. Όπου(φρούτο => φρούτο. Μήκος < 6); foreach (string fruit στο ερώτημα) Console.WriteLine(φρούτο); Όσο για τα δύο παραπάνω παραδείγματα, νομίζω ότι εξακολουθούν να χρησιμοποιούνται συχνά στον συνηθισμένο προγραμματισμό, θα μπορούσαμε κάλλιστα να δοκιμάσουμε... |