Giới thiệu
Một biến List<T> có thể gán giá trị null (không tham chiếu đến đối tượng nào). Khác với list rỗng (empty list), list null sẽ ném NullReferenceException khi truy cập bất kỳ thành viên nào.
Ví dụ cơ bản
ListmyList = null; Console.WriteLine(myList == null); // True
Ví dụ hoàn chỉnh
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
List myList = null;
// Kiểm tra null
Console.WriteLine(myList == null); // True
}
}
Kết quả
True
Phân biệt Null vs Empty (tóm tắt)
| Null List | Empty List | |
|---|---|---|
| Khởi tạo | List | List |
list == null | true | false |
list.Count | NullReferenceException | 0 |
| An toàn với foreach | Không | Có |
Cách xử lý an toàn
// 1. Kiểm tra null trước
if (myList != null)
{
foreach (var item in myList) { ... }
}
// 2. Toán tử null-conditional (C# 6+)
foreach (var item in myList ?? Enumerable.Empty()) { ... }
// 3. Khởi tạo sớm (khuyên dùng)
List myList = new List(); // Không bao giờ null
Lưu ý
- Tránh trả về null từ phương thức trả về List - trả về list rỗng thay thế.
- Dùng
[NotNull]attribute (Roslyn analyzer) để cảnh báo tại compile time. nulllà giá trị hợp lệ của kiểu tham chiếu, nhưng thường là dấu hiệu thiết kế kém (code smell).