IEnumerable vs IEnumerator: Sự khác biệt và so sánh

IEnumerable và IEnumerator đều là các giao diện có sẵn trong C#. Cái trước là một mô-đun, trong khi cái sau là một đối tượng. 

IEnumerable tạo IEnumerator. Ở đây GetEnumerator được sử dụng để lấy IEnumerator, vì mỗi vòng lặp được sử dụng để tạo mã sử dụng Enumerator. Một điều tra viên khác với IEnumerator vì IEnumerator là một giao diện. Điều tra viên thực hiện nó.

Các nội dung chính

  1. IEnumerable là một giao diện cho phép lặp qua một tập hợp các đối tượng, trong khi IEnumerator là một lớp triển khai giao diện IEnumerator và cung cấp các phương thức để duyệt qua một tập hợp.
  2. IEnumerable cung cấp một phương thức duy nhất (GetEnumerator) trả về một đối tượng IEnumerator, trong khi IEnumerator cung cấp các phương thức để di chuyển qua bộ sưu tập (MoveNext) và truy xuất đối tượng hiện tại (Hiện tại).
  3. IEnumerable được sử dụng để tạo các bộ sưu tập có thể được lặp lại, trong khi IEnumerator được sử dụng để duyệt qua các bộ sưu tập đó.

IEnumerable so với IEnumerator

Sự khác biệt giữa IEnumerable và IEnumerator là IEnumerable hoạt động cho giao diện chung và IEnumerator hoạt động cho tất cả các giao diện không chung chung. IEnumerable trỏ đến một đối tượng có thể được liệt kê, nhưng IEnumerator được triển khai bằng cách sử dụng từng câu lệnh để lặp lại. Giao diện IEnumerable sử dụng IEnumerator để lặp lại tất cả các phần tử được sử dụng cho mỗi câu lệnh.

IEnumerable so với IEnumerator

IEnumerable được sử dụng để tìm một đối tượng được sử dụng làm giao diện. Nó được sử dụng để lặp lại tất cả các phần tử trong bộ sưu tập.

Quá trình lặp lại giúp duyệt qua bộ sưu tập dễ dàng hơn. Nó hoạt động như một đối tượng. GetEnumerator là một phương thức được sử dụng để triển khai giao diện IEnumerator.

IEnumerator có hai phương thức, Reset() và MoveNext() và có thuộc tính mở rộng được gọi là Hiện tại. MoveNext() là phương thức tạo ra giá trị Boolean chỉ ra phần tử cuối của danh sách. Phương pháp đặt lại làm cho điều tra viên ở vị trí mặc định của nó.

Cũng đọc:  JDK 1.5 so với JDK 1.6: Sự khác biệt và so sánh

Bảng so sánh

Các thông số so sánhIE có thể đếm đượcIEnumerator
Loại giao diệnChungkhông chung chung
Số phương phápMộtHai
Hoàn trảIEnumeratorKhông áp dụng
Trạng thái con trỏKhông thể giữ lạiCó thể giữ lại
Sản phẩmđối tượng liệt kêĐối với mỗi kết quả tuyên bố
cách viếtTóm tắtBê tông
Ghim cái này ngay để nhớ sau
Ghim cái này

IEnumerable là gì?

Đây là một giao diện được triển khai bởi một lớp có thể đếm được. Toàn bộ bộ sưu tập trong c# có thể triển khai một giao diện IEnumerable. Nó trả về IEnumerator. Nó không thay đổi theo các chỉ định truy cập được sử dụng trong mã.

IEnumerable có một phương thức được gọi là GetEnumerator. Việc triển khai này chỉ được thực hiện bên trong lớp.

Quá trình lặp lại giúp duyệt qua bộ sưu tập dễ dàng hơn. Nó hoạt động như một đối tượng. GetEnumerator là một phương thức được sử dụng để triển khai giao diện IEnumerator.

IEnumerable được biết đến như một giao diện chung vì mã được viết rất nhỏ vì nó chỉ cần triển khai một lần. Không quan trọng có bao nhiêu hàm tạo được sử dụng trong quá trình triển khai mã để lặp lại tất cả các phần tử.

Mã có mức độ bảo trì thấp vì việc sửa đổi mã nằm trong một nền tảng và không yêu cầu bất kỳ thay đổi bổ sung nào. Nó sử dụng tính trừu tượng để lặp lại tất cả các phần tử trong mảng.

Nó sử dụng trình lặp IEnumerator được sử dụng để lặp lại tất cả các phần tử. Vì nó là một lớp chung nên nó dễ dàng thực hiện việc lặp lại các phần tử trong mảng. Nó cung cấp một giao diện chung. Nó được sử dụng trong tất cả các lớp không chung chung.

IEnumerator là gì?

Nó có hai phương thức để thực hiện lặp lại tất cả các phần tử trong bộ sưu tập. Nó có hai phương thức là MoveNext và Reset. MoveNext là một phương pháp chỉ ra rằng phép lặp chưa đạt đến phần tử cuối cùng của bộ sưu tập.

Cũng đọc:  Moviemad Proxy và Mirrors, Unblock và các lựa chọn thay thế [2025]

 Phương thức đặt lại thực hiện tương tự như âm thanh của nó. Nó chỉ ra để bắt đầu lại lần lặp sau khi lần lặp trước được thực hiện cho đến phần tử cuối cùng của mảng.

Cuối cùng, một đối tượng là Hiện tại, cung cấp phần tử hiện tại là kết quả của phép lặp. Nó có một số quyền truy cập cụ thể vào các phần tử của nó. Nó chỉ cung cấp quyền truy cập chỉ đọc vào tất cả các mảng của nó.

IEnumerator gọi thuộc tính hiện tại, thuộc tính này chịu trách nhiệm trả về phần tử trong danh sách hiện được sử dụng. Nó sử dụng hai phương thức và thuộc tính để lặp lại đối tượng.

Mỗi câu lệnh sử dụng danh sách mảng, bắt đầu lặp lại bằng cách di chuyển về phía trước và sử dụng một trong các phương thức. IEnumerator không thể trả về IEnumerable.

Nó có thể dễ dàng lấy lại trạng thái hiện tại của con trỏ. IEnumerator sử dụng cách viết cụ thể. Nó bắt đầu lặp trong ngăn xếp bằng cách lặp lại phần tử đầu tiên của ngăn xếp và kết thúc bằng phần tử cuối cùng của ngăn xếp.

Sự khác biệt chính giữa IEnumerable và IEnumerator

  1. IEnumerable được sử dụng cho giao diện chung, nhưng IEnumerator được sử dụng cho giao diện không chung chung.
  2. IEnumerable chỉ có một phương thức, trong khi IEnumerator chỉ có hai phương thức.
  3. IEnumerable có thể trả về IEnumerator, nhưng IEnumerator không thể trả về IEnumerable.
  4. IEnumerable không thể giữ lại trạng thái hiện tại của con trỏ, nhưng IEnumerator có thể giữ lại trạng thái đó.
  5. IEnumerable hiển thị một đối tượng được liệt kê, trong khi IEnumerator có một đối tượng cho mỗi câu lệnh.
  6. IEnumerable là một cách viết trừu tượng, nhưng IEnumerator sử dụng cách viết cụ thể.
dự án
  1. https://ieeexplore.ieee.org/abstract/document/7883396/

Một yêu cầu?

Tôi đã nỗ lực rất nhiều để viết bài đăng trên blog này nhằm cung cấp giá trị cho bạn. Nó sẽ rất hữu ích cho tôi, nếu bạn cân nhắc chia sẻ nó trên mạng xã hội hoặc với bạn bè/gia đình của bạn. CHIA SẺ LÀ ♥️

Bạn muốn lưu bài viết này cho sau này? Nhấp vào trái tim ở góc dưới cùng bên phải để lưu vào hộp bài viết của riêng bạn!

về tác giả

Chara Yadav có bằng MBA về Tài chính. Mục tiêu của cô là đơn giản hóa các chủ đề liên quan đến tài chính. Cô đã làm việc trong lĩnh vực tài chính khoảng 25 năm. Cô đã tổ chức nhiều lớp học về tài chính và ngân hàng cho các trường kinh doanh và cộng đồng. Đọc thêm tại cô ấy trang sinh học.