Cấp bậc tác giả:

TRAINING

Phân biệt List và IEnumable

Được viết bởi webmaster ngày 02/03/2023 lúc 12:28 PM
List và IEnumerable là hai kiểu dữ liệu trong .NET Framework, được sử dụng để lưu trữ một danh sách các phần tử. Tuy nhiên, chúng có một số khác biệt quan trọng như sau:
  • 0
  • 2374

Phân biệt List và IEnumable

List và IEnumerable là hai kiểu dữ liệu trong .NET Framework, được sử dụng để lưu trữ một danh sách các phần tử. Tuy nhiên, chúng có một số khác biệt quan trọng như sau:
  1. List là một kiểu dữ liệu cụ thể của một danh sách các phần tử trong .NET Framework, trong khi đó IEnumerable là một interface.
  2. List là một kiểu dữ liệu có kích thước cố định, trong khi IEnumerable là một kiểu dữ liệu có thể mở rộng và thay đổi kích thước.
  3. List cung cấp nhiều phương thức xử lý và truy cập đến các phần tử trong danh sách, như Add(), Remove(), IndexOf(), Contains(),... Trong khi đó, IEnumerable chỉ cung cấp một số phương thức cơ bản để duyệt danh sách, như GetEnumerator() và MoveNext().
  4. List có thể được sử dụng để thực hiện các thao tác với danh sách, như thêm, sửa đổi, xóa, sắp xếp, tìm kiếm, và các hoạt động khác. Trong khi đó, IEnumerable chỉ cung cấp khả năng duyệt danh sách và không cho phép sửa đổi danh sách.
Dưới đây là một ví dụ về cách sử dụng List và IEnumerable:
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Tạo một List mới chứa các số nguyên
        List<int> numbers = new List<int> { 1, 2, 3 };

        // Thêm một số vào cuối danh sách
        numbers.Add(4);

        // Xóa một số khỏi danh sách
        numbers.Remove(2);

        // Duyệt qua danh sách và in ra các phần tử
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }

        // Tạo một IEnumerable mới từ List hiện tại
        IEnumerable<int> enumerable = numbers;

        // Duyệt qua IEnumerable và in ra các phần tử
        foreach (int number in enumerable)
        {
            Console.WriteLine(number);
        }
    }
}
Trong ví dụ trên, chúng ta tạo một List mới chứa các số nguyên và thực hiện thêm và xóa phần tử. Sau đó chúng ta tạo một IEnumerable từ List hiện tại và duyệt qua nó để in ra các phần tử.
Vì vậy, nếu bạn cần một danh sách có khả năng mở rộng và thay đổi kích thước, bạn có thể sử dụng List. Nếu bạn chỉ cần duyệt danh sách và không cần thay đổi nó, thì bạn có thể sử dụng IEnumerable.
Trong ASP.NET Core, khi bạn sử dụng Razor View Engine để hiển thị dữ liệu, bạn có thể truyền dữ liệu từ Controller đến View bằng cách sử dụng các model. Khi sử dụng các model, có thể sử dụng @model để khai báo kiểu dữ liệu cho model trong Razor View.
Khi sử dụng @model IEnumerable, nó cho biết rằng View sẽ nhận được một danh sách các đối tượng mà nó có thể duyệt qua bằng foreach loop. IEnumerable là một interface trong C# và có thể được triển khai bởi nhiều kiểu dữ liệu, chẳng hạn như List, Array, HashSet, v.v.
Khi sử dụng @model List, nó cho biết rằng View sẽ nhận được một danh sách các đối tượng kiểu List, mà nó có thể được truy xuất bằng các phương thức của List như Add(), Remove(), IndexOf(), v.v. Chú ý rằng List là một kiểu dữ liệu cụ thể và không phải là một interface như IEnumerable.
Dưới đây là một ví dụ về cách sử dụng List và IEnumerable trong Razor:
// Trong Controller
public ActionResult Index()
{
    // Tạo một List mới chứa các Customer
    List<Customer> customers = new List<Customer>
    {
        new Customer { FirstName = "John", LastName = "Doe" },
        new Customer { FirstName = "Jane", LastName = "Doe" }
    };

    // Truyền List đến View
    return View(customers);
}

// Trong View (Index.cshtml)
@model IEnumerable<Customer>

@foreach (var customer in Model)
{
    <p>@customer.FirstName @customer.LastName</p>
}
Trong ví dụ trên, chúng ta tạo một List mới chứa các Customer và truyền nó đến View. Trong View, chúng ta khai báo Model là một IEnumerable và duyệt qua nó để hiển thị thông tin của từng Customer.
Bạn vẫn có thể sử dụng @model List<Customer> trong View. Điều này cho phép bạn sử dụng các phương thức và thuộc tính của List trên Model. Tuy nhiên, nếu bạn chỉ cần duyệt qua danh sách và không cần thay đổi nó, việc sử dụng IEnumerable là một lựa chọn tốt hơn vì nó cho phép bạn truyền vào một loạt các kiểu dữ liệu khác nhau (chẳng hạn như một mảng hoặc một HashSet) mà không cần thay đổi code trong View.
Do đó, nếu Controller truyền vào View một danh sách các đối tượng có thể được duyệt qua, bạn có thể sử dụng @model IEnumerable. Nếu Controller truyền vào View một danh sách các đối tượng kiểu List, bạn có thể sử dụng @model List để truy cập các phương thức của List.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML