(Đây là một bản sao, nhưng thật khó để tìm kiếm, vì vậy tôi đủ hạnh phúc để cung cấp thêm mục tiêu khác cho các tìm kiếm tương lai ...)
Đó là null-coalescing operator. Về cơ bản nó đánh giá toán hạng đầu tiên, và nếu kết quả là null (hoặc tham chiếu null hoặc giá trị null cho một kiểu giá trị nullable) thì nó sẽ đánh giá toán hạng thứ hai. Kết quả là toán hạng nào được đánh giá cuối cùng, hiệu quả.
Lưu ý rằng do associativity của nó, bạn có thể viết:
int? x = E1 ?? E2 ?? E3 ?? E4;
nếu E1
, E2
, E3
và E4
đều biểu hiện kiểu int?
- nó sẽ bắt đầu với E1
và tiến bộ cho đến khi nó tìm thấy một phi giá trị null.
Toán hạng đầu tiên phải là một kiểu nullable, nhưng toán hạng thứ hai có thể không null, trong trường hợp này kiểu biểu thức tổng thể là không nullable. Ví dụ, giả E4 là một biểu hiện của loại int
(nhưng tất cả phần còn lại vẫn int?
sau đó bạn có thể làm cho x
không nullable:
int x = E1 ?? E2 ?? E3 ?? E4;
Nguồn
2010-10-05 09:23:19
'??' như vậy có thể là khó để tìm kiếm, nhưng tìm kiếm "C# syntax" hoặc "C# operator" khá nhanh chóng đưa bạn đến câu trả lời –