Kể từ, hình thức đầu tiên sử dụng 2 vs 1 C# Các nhà khai thác, nó thể biên dịch để hơn Mã CIL mặc dù, trong hầu hết các trường hợp sử dụng nhiều nhất sẽ gặp phải, nó có thể sẽ không làm cho một kích thước mã đáng kể hoặc hiệu suất khác biệt.
Điều gì có khả năng tạo sự khác biệt đáng kể là khả năng đọc và do đó có thể xảy ra lỗi khi viết/sửa đổi. Tôi sẽ (và bạn Sheldons có thể muốn che mắt của bạn bây giờ) tránh việc sử dụng "!" Nhà điều hành com-PLETELY. "Gasp! Của tôi - WORD!" Vâng, tôi đã nói. Và tôi nghĩ rằng nó! Với một PASSION! Nó quá dễ bỏ lỡ vì nó thường nằm bên cạnh một ký tự dấu chấm câu tương tự (ví dụ "(") ở bên trái và một chữ cái Định danh tương tự (ví dụ "I") ở bên phải. Và thiếu nó có thể có hậu quả chính, vì nó có nghĩa là bạn nghĩ rằng mã đang thực hiện OPPOSITE chính xác về những gì nó thực sự đang làm! Và nó cũng có thể bị bỏ sót nhiều hơn bởi các chứng khó đọc làm cho nó có khả năng là một vấn đề về quyền tàn tật được ADA bảo vệ. sau rất có thể ví dụ:
if (!IsIisServerConnected)
if (IsOfflineMode || !(IsIisLocalServerConnected || IsIisCloudServerConnected))
tôi sẽ thay vì viết như sau:
if (false.Equals(IsIisServerConnected))
if
(
IsOfflineMode
|| false.Equals
(
IsIisLocalServerConnected
|| IsIisCloudServerConnected
)
)
Hoặc trong trường hợp của bạn:
if (false.Equals(foo == null))
Hãy nhớ rằng C (ngôn ngữ C#, C++, JavaScript, Java và nhiều ngôn ngữ phổ biến hiện nay khác cuối cùng thừa hưởng cơ bản cú pháp của họ từ) được tạo ra tại một thời gian khi Thẻ Punch vẫn còn phổ biến. Với các CPU hiện đại, RAM, màn hình và IDE (đoạn mã "false.Equals (?)" Có thể được tạo bằng Shortcut Keyboard tùy chỉnh), với hầu hết mọi người cho hầu hết các ứng dụng, khả năng đọc là nhiều, nhiều, MUCH (tôi đã đề cập đến) nhiều "?) quan trọng hơn việc lưu một vài ký tự mã.
P.S. Bạn cũng có thể thêm Phương thức tiện ích vào số Boolean
Cấu trúc gọi nó, oh, tôi không biết, Not
! ; D Vì vậy, bạn có thể viết:
if (IsIisServerConnected.Not())
if ((foo == null).Not())
Cảm ơn mọi người, có thể tái cấu trúc lại: -/ –