Tôi có một mảnh đơn giản chút mã được bực bội tôi:C# Nhà điều hành có điều kiện Không phải là tuyên bố?
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
Tại thời gian biên dịch, nó tạo ra các lỗi:
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
HashSet.Add
được ghi chép lại để trả về một bool, vì vậy ternary (?) nhà điều hành nên hoạt động, và điều này trông giống như một cách hoàn toàn hợp pháp để theo dõi số mục duy nhất và trùng lặp tôi thêm vào bộ băm.
Khi tôi định dạng lại dưới dạng if-then-else, nó hoạt động tốt.
Bất cứ ai có thể giải thích được lỗi và nếu có cách để thực hiện điều này như một toán tử bậc ba đơn giản?
Tôi thích dùng statemnet hơn. Biến giả gán biến mà một số câu trả lời gợi ý chỉ thêm nhầm lẫn. –
Cũng lưu ý ternaries thường được sử dụng để chọn một giá trị, không chọn một hành động. Trong trường hợp của bạn, bạn đang chọn có tăng một trong hai giá trị hay không. Vì vậy, nó có ý nghĩa ngữ nghĩa hơn để sử dụng một if-else vì bạn đang chọn một hành động. – AaronLS