Đánh giá ngắn mạch
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 36 trên 66.
Đánh giá đoản mạch là một kỹ thuật tối ưu hóa trong C#, trong đó toán hạng thứ hai của toán tử AND logic (&&) và OR logic (||) chỉ được đánh giá khi cần thiết.
Với phép AND logic (&&), nếu toán hạng đầu tiên là false, kết quả luôn là false, bất kể toán hạng thứ hai là gì:
bool result = false && SomeMethod();Trong ví dụ này, SomeMethod() sẽ không được gọi vì toán hạng đầu tiên đã là false.
Với toán tử OR logic (||), nếu toán hạng đầu tiên là true, kết quả luôn là true, bất kể toán hạng thứ hai là gì:
bool result = true || SomeMethod();Ở đây, SomeMethod() sẽ không được gọi vì toán hạng đầu tiên đã là true.
Bạn có thể dùng hành vi này để tránh lỗi, chẳng hạn kiểm tra xem một đối tượng có phải là null hay không trước khi truy cập các thuộc tính của nó:
// An toàn: nếu student là null, chương trình sẽ không đánh giá vế phải
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Thử thách
DễTạo một phương thức có tên ProcessUserInput nhận hai đối số:
- Một chuỗi (
input) - Một số nguyên (
minLength)
Phương thức cần:
- Kiểm tra xem đầu vào có khác null không
- Kiểm tra xem độ dài đầu vào có ít nhất bằng
minLengthkhông - Chỉ khi cả hai điều kiện đều đúng, in ra "Valid input: " theo sau là đầu vào
- Nếu một trong hai điều kiện không thỏa mãn, in ra "Invalid input"
Dùng phép đánh giá ngắn mạch để tránh mọi khả năng xảy ra NullReferenceException.
Tự làm thử
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// 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