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