Cũng giống như toán tử &
và &&
toán tử, Toán tử kép là toán tử "ngắn mạch".
Ví dụ:
if(condition1 || condition2 || condition3)
Nếu điều kiện 1 là đúng, điều kiện 2 và 3 sẽ KHÔNG được kiểm tra.
if(condition1 | condition2 | condition3)
Điều này sẽ kiểm tra điều kiện 2 và 3, ngay cả khi 1 đã đúng. Vì điều kiện của bạn có thể là các chức năng khá tốn kém, bạn có thể tăng hiệu suất tốt bằng cách sử dụng chúng.
Có một cảnh báo lớn, NullReferences hoặc các vấn đề tương tự. Ví dụ:
if(class != null && class.someVar < 20)
Nếu lớp là null, câu lệnh if sẽ dừng sau class != null
là false. Nếu bạn chỉ sử dụng &, nó sẽ cố gắng kiểm tra class.someVar
và bạn sẽ có được một thứ tốt đẹp NullReferenceException
. Với Nhà điều hành Or có thể không phải là một cái bẫy nhiều vì không chắc bạn có thể kích hoạt điều gì đó xấu, nhưng đó là điều cần lưu ý.
Không ai từng sử dụng các toán tử đơn &
hoặc |
toán tử, trừ khi bạn có một thiết kế trong đó mỗi điều kiện là một hàm phải được thực thi. Nghe có vẻ như mùi thiết kế, nhưng đôi khi (hiếm khi) đó là một cách sạch sẽ để làm công cụ. Các &
nhà điều hành không "chạy 3 chức năng, và nếu một trong số họ trả về false, thực hiện các khối khác", trong khi |
không "chỉ chạy các khối khác nếu không trả lại false" - có thể hữu ích, nhưng như đã nói, thường đó là một thiết kế mùi.
Có một cách sử dụng thứ hai của toán tử |
và &
toán tử: Hoạt động theo bitwise .