Các mẫu kiểm tra null
Thuộc phần Logic và luồng chương trình trong hành trình C# của Coddy. Bài học 33 trên 66.
Kiểm tra null là phần thiết yếu khi viết code C# vững chắc. Bạn có thể dùng một số mẫu để kiểm tra an toàn các giá trị null.
Hãy cùng tìm hiểu một số mẫu kiểm tra giá trị null thường gặp:
Trước tiên, kiểm tra cơ bản xem giá trị có phải là null không:
string name = null;
if (name == null)
{
Console.WriteLine("Name is null");
}
Một mẫu phổ biến khác là toán tử điều kiện null (?.), giúp truy cập an toàn vào các thành viên của đối tượng có thể là null:
string name = null;
int? length = name?.Length; // length sẽ là null
Toán tử hợp nhất null (??) cung cấp giá trị mặc định khi một biểu thức là null:
string name = null;
string displayName = name ?? "Unknown"; // displayName sẽ là "Unknown"
Bạn cũng có thể kết hợp các mẫu này để xử lý những tình huống phức tạp hơn:
string name = null;
int length = (name ?? "").Length; // length sẽ là 0
Phương thức string.IsNullOrWhiteSpace() giúp bạn kiểm tra chuỗi có giá trị null, rỗng hoặc chỉ chứa ký tự khoảng trắng, tất cả chỉ trong một lần gọi:
string name = null;
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("Name is null, empty, or whitespace");
}
Điều này đặc biệt hữu ích khi bạn cần xem null, chuỗi rỗng và chuỗi chỉ chứa khoảng trắng là như nhau. Ví dụ:
string name1 = null;
string name2 = "";
string name3 = " ";
// Cả ba đều sẽ in ra thông báo
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");
Lưu ý rằng string.IsNullOrWhiteSpace() khác với việc chỉ kiểm tra null. Hàm này cũng phát hiện các chuỗi rỗng và các chuỗi chỉ chứa dấu cách, tab hoặc ký tự khoảng trắng khác.
Thử thách
DễTạo một phương thức có tên processUserName nhận tham số chuỗi userName. Phương thức cần:
- Nếu
userNamelà null, trả về "No user provided" - Nếu
userNamerỗng hoặc chỉ chứa khoảng trắng, trả về "Invalid username" - Nếu không, trả về "Welcome, [userName]!" trong đó [userName] là tên người dùng thực tế
Nhớ dùng cách kiểm tra null phù hợp.
Tự làm thử
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// Viết code của bạn ở đây
}
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Mảng nhiều chiều
Cơ bản về mảng 2 chiềuKhai báo và khởi tạo mảng 2 chiềuTruy cập phần tử mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuMảng răng cưaCác phép toán ma trận thường gặpÔn tập: mảng nhiều chiều4Kỹ thuật điều khiển luồng
Lệnh trả về sớmMệnh đề bảo vệCâu lệnh nhảy (goto)Break và continueLàm phẳng các câu lệnh điều kiện lồng nhau7Toán tử logic nâng cao
Đánh giá ngắn mạchToán tử logic có điều kiệnĐộ ưu tiên của toán tửÔn tập: toán tử nâng cao2Ra quyết định nâng cao
Nhiều điều kiệnLogic Boolean phức tạpSo sánh if và switchCâu lệnh switch lồng nhauÔn tập về ra quyết định nâng cao5Xử lý ngoại lệ
Cơ bản về try-catchCác loại ngoại lệNhiều khối catchLàm việc với tệpKhối finallyUsing hay try-finallyNgoại lệ tùy chỉnhÔn tập: xử lý lỗi8Hệ thống phân tích dữ liệu
Thiết lập thu thập dữ liệuLogic nhập dữ liệu3Cải tiến vòng lặp
Hiệu suất vòng lặpLặp qua dữ liệu phức tạpTừng kiểu vòng lặpTái cấu trúc vòng lặpÔn tập: vòng lặp tối ưu6Xử lý null
Cơ bản về tham chiếu nullKiểu giá trị có thể nullCác mẫu kiểm tra nullLập trình phòng vệÔn tập về an toàn với nullTự luyện tập: Trình biên dịch C# online