Computer >> Máy Tính >  >> Lập trình >> C#

Hai dấu chấm hỏi cùng nhau (??) có nghĩa là gì trong C #?


Đó là null-kết hợp nhà điều hành. Toán tử kết hợp rỗng ?? trả về giá trị của toán hạng bên trái của nó nếu nó không phải là null; nếu không, nó đánh giá toán hạng bên phải và trả về kết quả của nó. Các ?? toán tử không đánh giá toán hạng bên phải của nó nếu toán hạng bên trái đánh giá không phải null.

Kiểu nullable có thể đại diện cho một giá trị có thể không được xác định hoặc từ miền của kiểu. Chúng tôi có thể sử dụng ?? toán tử để trả về một giá trị thích hợp khi toán hạng bên trái có kiểu nullable. Nếu chúng ta cố gắng gán một kiểu giá trị nullable cho một kiểu giá trị không thể nullable mà không sử dụng dấu ?? toán tử, chúng tôi sẽ gặp lỗi thời gian biên dịch và nếu chúng tôi ép buộc nó, một ngoại lệ InvalidOperationException sẽ được ném ra.

Sau đây là những ưu điểm của toán tử Null-Coalescing Operator (??) -

  • Nó được sử dụng để xác định giá trị mặc định cho một mục có thể làm trống (cho cả kiểu giá trị và kiểu tham chiếu).

  • Nó ngăn ngoại lệ InvalidOperationException thời gian chạy.

  • Nó giúp chúng tôi loại bỏ nhiều điều kiện "nếu" dư thừa.

  • Nó hoạt động cho cả loại tham chiếu và loại giá trị.

  • Mã trở nên được tổ chức tốt và có thể đọc được.

Ví dụ

using System;
namespace MyApplication{
   class Program{
      static void Main(string[] args){
         int? value1 = null;
         int value2 = value1 ?? 99;
         Console.WriteLine("Value2: " + value2);
         string testString = "Null Coalescing";
         string resultString = testString ?? "Original string is null";
         Console.WriteLine("The value of result message is: " + resultString);
      }
   }
}

Đầu ra

Kết quả của ví dụ trên như sau.

Value2: 99
The value of result message is: Null Coalescing