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

Những toán tử nào mà C # cung cấp để đối phó với các giá trị null?

C # có ba toán tử sau để xử lý các giá trị null -

toán tử liên kết null (??)

Cho phép bạn nhận giá trị của một biến nếu nó không phải là giá trị rỗng, cách khác chỉ định một giá trị mặc định có thể được sử dụng.

Nó thay thế biểu thức sau trong C # -

string resultOne = value != null ? value : "default_value";

với biểu thức sau -

string resultTwo = value ?? "default_value";

Đây là một ví dụ minh họa điều này.

Ví dụ

using System;
class Program{
   static void Main(){
      string input = null;
      string choice = input ?? "default_choice";
      Console.WriteLine(choice); // default_choice
      string finalChoice = choice ?? "not_chosen";
      Console.WriteLine(finalChoice); // default_choice
   }
}

toán tử gán null-kết hợp (?? =)

Nó trả về giá trị ở phía bên trái nếu nó không phải là giá trị rỗng. Nếu không, nó trả về giá trị ở phía bên phải. Nói cách khác, nó cho phép bạn khởi tạo một biến thành một giá trị mặc định nào đó nếu giá trị hiện tại của nó là null.

Nó thay thế biểu thức sau trong C # -

if (result == null)
result = "default_value";

với biểu thức sau.

result ??= "default_value";

Toán tử này hữu ích với các thuộc tính được tính toán một cách lười biếng. Ví dụ -

Ví dụ

class Tax{
   private Report _lengthyReport;
   public Report LengthyReport => _lengthyReport ??= CalculateLengthyReport();
   private Report CalculateLengthyReport(){
      return new Report();
   }
}

toán tử điều kiện null (?.)

Toán tử này cho phép bạn gọi một phương thức trên một cá thể một cách an toàn. Nếu cá thể là null, nó trả về null thay vì ném NullReferenceException. Nếu không, nó chỉ gọi phương thức.

Nó thay thế biểu thức sau trong C # -

string result = instance == null ? null : instance.Method();

với biểu thức sau -

string result = instance?.Method();

Hãy xem xét ví dụ sau.

Ví dụ

using System;
string input = null;
string result = input?.ToString();
Console.WriteLine(result); // prints nothing (null)

Ví dụ

using System;
class Program{
   static void Main(){
      string input = null;
      string choice = input ?? "default_choice";
      Console.WriteLine(choice); // default_choice
      string finalChoice = choice ?? "not_chosen";
      Console.WriteLine(finalChoice); // default_choice
      string foo = null;
      string answer = foo?.ToString();
      Console.WriteLine(answer); // prints nothing (null)
   }
}

Đầu ra

default_choice
default_choice