C# mempunyai tiga pengendali berikut untuk mengendalikan nilai nol -
membolehkan anda mendapatkan nilai pembolehubah jika ia bukan nol, atau nyatakan nilai lalai yang boleh digunakan.
Ia menggantikan ungkapan berikut -
string resultOne = value != null ? value : "default_value";
dalam C# dengan ungkapan berikut -
string resultTwo = value ?? "default_value";
Berikut ialah contoh yang menggambarkan perkara ini.
Contoh
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 } }
Mengembalikan nilai di sebelah kiri jika ia bukan nol. Jika tidak, ia mengembalikan nilai di sebelah kanan. Dalam erti kata lain, ia membolehkan anda memulakan pembolehubah kepada beberapa nilai lalai jika nilai semasanya adalah batal.
Ia menggantikan ungkapan berikut dalam C# -
if (result == null) result = "default_value";
Gunakan ungkapan berikut.
result ??= "default_value";
Pengendali ini berguna untuk sifat yang dikira secara malas. Contohnya -
Contoh
class Tax{ private Report _lengthyReport; public Report LengthyReport => _lengthyReport ??= CalculateLengthyReport(); private Report CalculateLengthyReport(){ return new Report(); } }
Operator ini membenarkan anda memanggil kaedah dengan selamat pada contoh. Jika contoh itu batal, kembalikan nol dan bukannya membuang NullReferenceException. Jika tidak, ia hanya memanggil kaedah.
Ia menggantikan ungkapan berikut -
string result = instance == null ? null : instance.Method();
dalam C# dengan ungkapan berikut -
string result = instance?.Method();
Pertimbangkan contoh berikut.
Contoh
using System; string input = null; string result = input?.ToString(); Console.WriteLine(result); // prints nothing (null)
Demonstrasi masa nyata
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) } }
default_choice default_choice
Atas ialah kandungan terperinci Apakah pengendali yang disediakan oleh C# untuk mengendalikan nilai nol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!