Trong C#, nếu tôi viếtCác + = điều hành với các loại nullable trong C#
int? x = null;
x += x ?? 1
Tôi mong chờ điều này là tương đương với:
int? x = null;
x = x + x ?? 1
Và như vậy, trong ví dụ đầu tiên, x
sẽ chứa 1
như trong ví dụ thứ hai. Nhưng nó không, nó chứa null. Toán tử + = dường như không hoạt động trên các kiểu nullable khi chúng chưa được gán. Tại sao cai nay lại la trương hợp đo?
Chỉnh sửa: Như đã chỉ ra, đó là vì null + 1 = null
và ưu tiên người vận hành. Trong phòng của tôi, tôi nghĩ rằng dòng này trong MSDN là mơ hồ !:
Các nhà khai thác unary và nhị phân được xác định trước và bất kỳ người dùng định nghĩa nhà khai thác mà tồn tại với nhiều loại giá trị cũng có thể được sử dụng bởi nullable loại. Các toán tử này tạo ra một giá trị null nếu [một trong hai] các toán hạng là null; nếu không, toán tử sử dụng giá trị chứa để tính kết quả.
+1 Ah, nhà điều hành được ưu tiên, kẻ thù xưa của tôi. Bạn tấn công một lần nữa! – JDB
Không '??' có ưu tiên hơn '+'? (@ Câu trả lời của Servy) –
@AustinSalonen Không. http://msdn.microsoft.com/en-us/library/6a71f45d.aspx –