Vì vậy, nhiều câu trả lời ... Tôi chỉ muốn phá vỡ nó xuống hơn một chút:
p.Enabled = p.Enabled != true;
là ngữ nghĩa tương đương với:
var IN = p.Enabled;
var OUT = IN != true;
p.Enabled = OUT;
Vì vậy:
p.Enabled -> IN IN != true OUT -> p.Enabled
--------------- ------------- ----------------
true true != true false
false false != true true
(if nullable) null null != true true
Như vậy, từ Truth Table, nó có thể được nhìn thấy nó là như nhau * như logical not (!
) operator và có thể được viết lại như sau:
p.Enabled = !p.Enabled;
(Tôi tưởng tượng rằng hầu hết [kinh nghiệm] các lập trình viên thích hình thức sau này vì nó là một thành ngữ khá phổ biến.)
Chúc mừng mã hóa.
* Lưu ý việc bổ sung các null
như trạng thái đầu vào thứ ba trong trường hợp bool?
(aka Nullable<bool>
) các loại. (Cảm ơn, Thomas Mayfield ;-)
Nguồn
2012-03-06 18:45:52
Đã một thời gian kể từ khi tôi viết C#, nhưng có vẻ như nó tương đương với 'p.Enabled =! P.Enabled;'. – JasonFruit
p.Enabled = p.Enabled đây là nơi bạn nói rằng p.Enabled sẽ lấy giá trị p.Enabled (không tạo ra sence). Thế thì bạn đang nói nó không nên bằng tue; do đó, sai – Andrew
Ồ, mười câu trả lời trùng lặp cho câu hỏi này (bao gồm cả hai câu trả lời "nhận xét" ở trên). Tôi nghĩ một số người nên xóa câu trả lời của họ. –