Giới thiệu
Một List<T> được khởi tạo bằng constructor mặc định new List<T>() là danh sách rỗng (empty) - có Count = 0 nhưng không phải null.
Ví dụ cơ bản
ListmyList = new List (); Console.WriteLine(myList == null); // False Console.WriteLine(myList.Count); // 0
Ví dụ hoàn chỉnh
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
List myList = new List();
// Trả về false: list không null, là list rỗng
Console.WriteLine(myList == null);
Console.WriteLine("Count: " + myList.Count);
}
}
Kết quả
False Count: 0
Phân biệt: Null vs Empty
| Đặc điểm | Null List | Empty List |
|---|---|---|
| Khởi tạo | List | List |
list == null | true | false |
list.Count | Ném NullReferenceException | 0 |
foreach | Ném ngoại lệ | Chạy 0 lần (an toàn) |
list.Add() | Ném ngoại lệ | Hoạt động bình thường |
Best Practice
- Luôn khởi tạo list:
var list = new List<T>();thay vì để null. - Trả về list rỗng thay vì null từ phương thức:
return new List<T>();hoặcreturn Enumerable.Empty<T>().ToList();. - Kiểm tra null trước khi dùng nếu không chắc chắn:
if (list != null && list.Count > 0). - Dùng
list?.Count ?? 0(C# 6+) để an toàn.
Kiểm tra rỗng
if (myList.Count == 0) { ... }
// Hoặc LINQ
if (!myList.Any()) { ... }
// Hoặc extension (C# 8+)
if (myList.IsNullOrEmpty()) { ... } // Cần viết extension method