ความแตกต่างระหว่าง IEnumerable และ IEnumerator (พร้อมตาราง)

สารบัญ:

Anonim

IEnumerable และ IEnumerator เป็นอินเทอร์เฟซที่มีอยู่ใน C # อดีตเป็นโมดูลในขณะที่หลังเป็นวัตถุ

IEnumerable สร้าง IEnumerator ที่นี่ GetEnumerator ใช้เพื่อรับ IEnumerator Foreach loop ใช้สำหรับสร้างโค้ดที่ใช้ Enumerator ตัวแจงนับแตกต่างจาก IEnumerator เนื่องจาก IEnumerator เป็นส่วนต่อประสาน ตัวแจงนับดำเนินการมัน

IEnumerable เทียบกับ IEnumerator

ความแตกต่างระหว่าง IEnumerable และ IEnumerator คือ IEnumerable ใช้งานได้กับอินเทอร์เฟซทั่วไป และ IEnumerator ใช้ได้กับอินเทอร์เฟซที่ไม่ใช่แบบทั่วไปทั้งหมด IEnumerable ชี้ไปที่อ็อบเจ็กต์ที่สามารถแจงนับได้ แต่ IEnumerator ถูกใช้งานโดยใช้แต่ละคำสั่งสำหรับการวนซ้ำ อินเทอร์เฟซ IEnumerable ใช้ IEnumerator สำหรับการทำซ้ำองค์ประกอบทั้งหมดที่ใช้สำหรับแต่ละคำสั่ง

IEnumerable ใช้เพื่อค้นหาวัตถุที่ใช้เป็นอินเทอร์เฟซ ใช้สำหรับทำซ้ำองค์ประกอบทั้งหมดในคอลเล็กชัน กระบวนการวนซ้ำทำให้ง่ายต่อการสำรวจในคอลเลกชัน มันทำหน้าที่เป็นวัตถุ GetEnumerator เป็นวิธีการที่ใช้สำหรับการใช้งานอินเทอร์เฟซ IEnumerator

IEnumerator มีสองวิธีคือ Reset() และ MoveNext() และมีคุณสมบัติเพิ่มเติมที่เรียกว่า Current MoveNext() เป็นวิธีการที่สร้างค่าบูลีนที่ชี้ให้เห็นองค์ประกอบสุดท้ายของรายการ วิธีการรีเซ็ตทำให้ตัวแจงนับเป็นตำแหน่งเริ่มต้น

ตารางเปรียบเทียบระหว่าง IEnumerable และ IEnumerator

พารามิเตอร์ของการเปรียบเทียบ

จำนวน

IEnumerator

ประเภทของอินเทอร์เฟซ ทั่วไป ไม่ใช่ทั่วไป
จำนวนวิธี หนึ่ง สอง
คืนสินค้า IEnumerator ไม่มี
สถานะเคอร์เซอร์ เก็บไม่ได้ เก็บได้
ผลิตภัณฑ์ ระบุวัตถุ สำหรับแต่ละผลลัพธ์คำสั่ง
วิธีการเขียน เชิงนามธรรม คอนกรีต

IEnumerable คืออะไร?

นี่คืออินเทอร์เฟซที่นำมาใช้โดยคลาสที่นับได้ คอลเล็กชันทั้งหมดใน c# สามารถใช้อินเทอร์เฟซ IEnumerable ได้ ส่งคืน IEnumerator จะไม่เปลี่ยนแปลงตามตัวระบุการเข้าถึงที่ใช้ในรหัส IEnumerable มีวิธีการที่เรียกว่า GetEnumerator การดำเนินการนี้ทำได้ภายในชั้นเรียนเท่านั้น

กระบวนการวนซ้ำทำให้ง่ายต่อการสำรวจในคอลเลกชัน มันทำหน้าที่เป็นวัตถุ GetEnumerator เป็นวิธีการที่ใช้สำหรับการใช้งานอินเทอร์เฟซ IEnumerator IEnumerable มักรู้จักกันในชื่ออินเทอร์เฟซทั่วไปเนื่องจากโค้ดมีขนาดเล็กกว่ามากเพราะต้องการการใช้งานเพียงครั้งเดียว ไม่สำคัญว่าจะใช้คอนสตรัคเตอร์กี่ตัวในการติดตั้งโค้ดเพื่อทำซ้ำองค์ประกอบทั้งหมด

โค้ดมีการบำรุงรักษาต่ำ เนื่องจากการดัดแปลงโค้ดอยู่ภายใต้แพลตฟอร์มเดียวและไม่ต้องการการเปลี่ยนแปลงเพิ่มเติมใดๆ มันใช้นามธรรมสำหรับการวนซ้ำขององค์ประกอบทั้งหมดในอาร์เรย์ มันใช้ตัววนซ้ำ IEnumerator ซึ่งใช้สำหรับการวนซ้ำขององค์ประกอบทั้งหมด เนื่องจากเป็นคลาสทั่วไป มันจึงทำซ้ำองค์ประกอบในอาร์เรย์ได้อย่างง่ายดาย มันมีอินเทอร์เฟซทั่วไป มันถูกใช้ในคลาสที่ไม่ใช่แบบทั่วไปทั้งหมด

IEnumerator คืออะไร?

มีสองวิธีในการใช้การวนซ้ำองค์ประกอบทั้งหมดในคอลเล็กชัน มีสองวิธีคือ MoveNext และ Reset MoveNext เป็นวิธีการที่ชี้ให้เห็นว่าการวนซ้ำยังไม่ถึงองค์ประกอบสุดท้ายของคอลเลกชัน

วิธีการรีเซ็ตทำในสิ่งเดียวกับที่ฟัง มันชี้ให้เห็นถึงการเริ่มต้นการวนซ้ำอีกครั้งหลังจากการวนซ้ำก่อนหน้าเสร็จสิ้นจนถึงองค์ประกอบสุดท้ายของอาร์เรย์ สุดท้าย วัตถุหนึ่งคือปัจจุบัน ซึ่งให้องค์ประกอบปัจจุบันเป็นผลของการวนซ้ำ มีการเข้าถึงองค์ประกอบบางอย่างโดยเฉพาะ ให้การเข้าถึงแบบอ่านอย่างเดียวสำหรับอาร์เรย์ทั้งหมดเท่านั้น

IEnumerator เรียกคุณสมบัติปัจจุบัน ซึ่งมีหน้าที่ในการส่งคืนองค์ประกอบในรายการที่กำลังใช้งานอยู่ มันใช้สองวิธีและคุณสมบัติสำหรับการวนซ้ำของวัตถุ แต่ละคำสั่งใช้รายการอาร์เรย์และเริ่มต้นการวนซ้ำโดยเดินหน้าและใช้วิธีการใดวิธีหนึ่ง IEnumerator ไม่สามารถส่งคืน IEnumerable

สามารถกลับสถานะปัจจุบันของเคอร์เซอร์ได้อย่างง่ายดาย IEnumerator ใช้วิธีการเขียนที่เป็นรูปธรรม มันเริ่มการวนซ้ำในสแต็กโดยวนซ้ำองค์ประกอบแรกของสแต็กและสิ้นสุดที่องค์ประกอบสุดท้ายของสแต็ก

ความแตกต่างหลักระหว่าง IEnumerable และ IEnumerator

บทสรุป

IEnumerable เป็นอินเทอร์เฟซที่ดำเนินการโดยคลาสที่นับได้ มันใช้นามธรรมสำหรับการวนซ้ำขององค์ประกอบทั้งหมดในอาร์เรย์ มันใช้ตัววนซ้ำ IEnumerator ซึ่งใช้สำหรับการวนซ้ำขององค์ประกอบทั้งหมด IEnumerator เรียกคุณสมบัติปัจจุบัน ซึ่งมีหน้าที่ในการส่งคืนองค์ประกอบในรายการที่กำลังใช้งานอยู่

มันใช้สองวิธีและคุณสมบัติสำหรับการวนซ้ำของวัตถุ IEnumerable มักรู้จักกันในชื่ออินเทอร์เฟซทั่วไปเนื่องจากโค้ดมีขนาดเล็กกว่ามาก IEnumerator ใช้วิธีการเขียนที่เป็นรูปธรรม GetEnumerator เป็นวิธีการที่ใช้สำหรับการใช้งานอินเทอร์เฟซ IEnumerator

กระบวนการวนซ้ำทำให้ง่ายต่อการสำรวจในคอลเล็กชันใน IEnumerable มันทำหน้าที่เป็นวัตถุ MoveNext เป็นวิธีการที่สร้างค่าบูลีนที่ชี้ให้เห็นองค์ประกอบสิ้นสุดของรายการ IEnumerable ส่งคืนอินเทอร์เฟซ IEnumerator เมื่อผ่านกระบวนการวนซ้ำ

ทั้งคู่ใช้สำหรับกระบวนการวนซ้ำ ซึ่งเป็นไปตามวิธีการวนซ้ำที่แตกต่างกัน มันใช้ตัววนซ้ำเพื่อวนซ้ำองค์ประกอบทั้งหมดในอาร์เรย์ของสแต็ก มันแตกต่างกันเนื่องจากคนหนึ่งใช้นามธรรมและอีกคนหนึ่งใช้รหัสที่เป็นรูปธรรม มีวิธีการและคุณสมบัติที่แตกต่างกันเพื่อคืนสถานะเคอร์เซอร์และรักษาการวนซ้ำของสแต็ก

ความแตกต่างระหว่าง IEnumerable และ IEnumerator (พร้อมตาราง)