Có lẽ một trong các chữ cái boolean được sử dụng là một biến, và chúng không nghĩ thay đổi toán tử khi chúng thay đổi toán hạng. Rõ ràng logic là tương đương.
Nhiều khả năng, họ đã nghĩ rằng trong trường hợp thứ hai, họ muốn giữ lại kết quả đánh giá điều kiện "nếu" đầu tiên. Tất nhiên, đó là lý do sai lầm.
Một tuyên bố tương đương đơn giản hơn:
bool tmp = somecase | someOtherCase;
EDIT
Như ghi chú pickypg, tuyên bố này có thể là khó hiểu, vì hầu hết mọi người đều không mong đợi |
với các giá trị boolean, và nhiều người sẽ không nhận ra nó hoặc sẽ không nghĩ về các tác động phụ. Cách tốt nhất để được rõ ràng (nếu thực sự có những tác dụng phụ) sẽ là giải pháp của minitech: chỉ cần thay đổi |=
thành =
.
Hoặc, nếu không có tác dụng phụ nào đối với biểu thức someOtherCase
, hãy sử dụng giải pháp của Jakub Konecki: someCase || someOtherCase
.
Phía bên phải có thực sự là một hằng số 'đúng' không? Sử dụng '| =' trên bool là hoàn toàn hợp lý, sử dụng '| = true' hiếm khi là. – CodesInChaos
Bạn biết rằng ngay cả [msdn] (http://msdn.microsoft.com/en-us/library/h5f1zzaw.aspx) liệt kê một toán tử boolean và '| =' trong ví dụ của nó ... –