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
- 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.
- 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).
- 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 đượ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ó.
Bảng so sánh
Các thông số so sánh | IE có thể đếm được | IEnumerator |
---|---|---|
Loại giao diện | Chung | không chung chung |
Số phương pháp | Một | Hai |
Hoàn trả | IEnumerator | Không áp dụng |
Trạng thái con trỏ | Không thể giữ lại | Có 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ết | Tóm tắt | Bê tông |
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.
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
- 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.
- IEnumerable chỉ có một phương thức, trong khi IEnumerator chỉ có hai phương thức.
- IEnumerable có thể trả về IEnumerator, nhưng IEnumerator không thể trả về IEnumerable.
- 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 đó.
- 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.
- IEnumerable là một cách viết trừu tượng, nhưng IEnumerator sử dụng cách viết cụ thể.