NullReferenceException ialah pengecualian yang dilemparkan oleh program apabila kami cuba mengakses sebarang jenis ahli yang mempunyai nilai sebagai null, bermakna apabila kami cuba mengakses pembolehubah yang tidak mempunyai nilai atau nilai null, pengecualian Null Reference akan dilemparkan. Pengecualian ini digunakan untuk pelbagai keluaran .NET, .NET Core dan .Net Framework. Pembolehubah rujukan dalam C# ini agak sepadan dengan konsep pf penunjuk dalam C. Terdapat pelbagai situasi apabila NullReferenceException berlaku dan terdapat pelbagai cara untuk mengelakkan atau menyelesaikannya.
Sintaks:
Ikuti ialah sintaks standard yang digunakan untuk pelaksanaan NullReferenceException:
public class NullReferenceException :SystemException
Pengecualian Rujukan Null diwarisi daripada Pengecualian Sistem yang pada asasnya boleh didapati dalam Objek dan ke Pengecualian. Seperti yang kita tahu ini adalah salah satu pengecualian yang paling biasa dan terdapat pelbagai cara untuk mengendalikannya.
Untuk memahaminya, Pengecualian Rujukan Null adalah hasil daripada peristiwa di mana kami cuba mengakses pembolehubah yang tidak merujuk kepada mana-mana objek lain. Sekarang, merujuk kepada rujukan tidak menjadi masalah di sini, tetapi apabila pembolehubah rujukan tidak merujuk kepada mana-mana objek lain, maka ia pada dasarnya dianggap sebagai batal. Di sinilah masalah timbul apabila kod dirujuk kepada titik yang berakhir menjadi null, maka kita akan menghadapi pengecualian, bernama NullReferenceException. Terdapat pelbagai senario di mana Pengecualian Rujukan Null dilemparkan oleh program. Apabila kita melaksanakan program dan jika ia menemui pengecualian rujukan nol, output akan menjadi seperti ini:
Pengecualian Tidak Terkendali:
System.NullReferenceException: Rujukan objek tidak ditetapkan kepada contoh objek.
Sekarang kita telah memahami tentang pengecualian itu dan cara ia berfungsi, mari kita beralih kepada menunjukkan pengecualian dengan contoh dengan betul. Untuk contoh pertama kami, yang sangat mudah, kami mempunyai pembolehubah ringkas yang memegang nilai nol dan kemudian kami akan cuba melakukan pembolehubah itu, tetapi sebagai batal, ia akan membuang Pengecualian Rujukan Null. Kod untuk program adalah seperti berikut:
Kod:
using System; public class SampleProgram { public static void Main() { string name = null; varval =name.ToString(); Console.WriteLine(val); } }
Penjelasan Kod: Dinyatakan dengan menggunakan Sistem, kami mempunyai Sampel kelas kami yang terbuka. Kemudian kami mempunyai pernyataan utama kekosongan statik kami, diikuti dengan penciptaan pembolehubah rentetan ringkas bernama nama dan nilai yang diberikan adalah nol, bermakna tiada nilai kepada pembolehubah. Pembolehubah rentetan ini penting di sini, kemudian kita mencipta pembolehubah lain bernama val, di mana kita cuba menukar nilai nama menjadi rentetan. Akhir sekali, kami mempunyai kenyataan cetakan yang akan mencetak nilai nama, yang kini ditukar menggunakan ToString(). Rujuk tangkapan skrin yang dilampirkan di bawah untuk output:
Output:
Jika dilaksanakan dengan betul, kod tersebut akan menimbulkan ralat, iaitu NullReferenceException. Dan sebabnya ialah apabila kita cuba memanggil kaedah ToString(), ia akan pergi ke nama pembolehubah, tetapi nama pembolehubah kami tidak mempunyai nilai, bermakna batal. Dan seperti yang kita tahu, nilai nol tidak boleh ditukar menggunakan ToString(). Jadi kod kami hanya akan mencetak ralat, yang bermaksud kod berjalan seperti yang dijangkakan.
Seperti yang dijelaskan, program ini telah ditamatkan oleh pengecualian. Seterusnya, kami akan menunjukkan satu lagi contoh mudah, yang seperti yang dijelaskan membawa kepada pengecualian yang sama.
Kod:
using System; class SampleProgram { static void Main() { string val = null; if (val.Length == 0) { Console.WriteLine(val); } } }
Penjelasan Kod: Sama seperti contoh pertama kami, di sini kami mempunyai ruang nama dan panggilan pertama kami, yang memegang pernyataan utama. Kemudian kami mempunyai pembolehubah rentetan kami dengan nilai sebagai null. Ini akan menjadi pembolehubah utama, yang akan membawa kepada pengecualian yang kami jangkakan. Kemudian kita mempunyai syarat if yang mudah di mana kita akan menyemak sama ada panjang pembolehubah kita adalah sifar atau tidak dan jika ia adalah sifar ia akan bergerak ke langkah seterusnya dan mencetak nilai. Tetapi kod itu tidak akan bergerak ke baris cetakan akhir kerana ia akan menghadapi pengecualian semasa dalam if. Rujuk tangkapan skrin yang dilampirkan di bawah untuk output:
Output:
Di sini, output adalah seperti contoh pertama kami, "Pengecualian Tidak Terkendali" kerana pengecualian adalah sama, kami cuba melaksanakan fungsi di sini tetapi seperti yang dijelaskan pembolehubah kami mempunyai nilai nol yang membawa kami ke Pengecualian Rujukan Null. Memandangkan kita telah melihat dan memahami bagaimana dan mengapa pengecualian rujukan nol ini berlaku, adalah penting untuk memahami cara kita boleh mengelakkannya untuk berfungsi dengan lebih baik program.
The Null Reference Exception is not a major error, but one of the common ones and one of the basic and simple way to avoid the Null Reference Exception is to check the variable or property before moving ahead and accessing it. And a very basic way to do this is to check the variable within an if statement. We will demonstrate an example where we will avoid the occurrence of the exception and the code will move on.
Code:
using System; class SampleProgram { static void Main() { string val = null; if (val == null) { Console.WriteLine("\n Value to the variable is null."); } else{ Console.WriteLine(val); } } }
Output:
Code Explanation: Here we have our class which holds the main statement than a variable with a null value. Then we enter an if else statement, where the value of the variable is checked if it is null, the print statement will be printed and the program will terminate, if the value is not null, then it will move ahead and into else part, it will print the value. As expected our code printed that “Value to the variable is null.” because the value is null. If we try the same example with a string value, the program will proceed and the else part will be printed.
The NullReferenceException is encountered when we attempt to access a variable which holds a null value, it can be variable or object. The reference should not hold null value else the exception will be thrown. There are many situations where this can be seen and the simplest way to avoid the NullReferenceException is to check beforehand, before accessing the value.
Atas ialah kandungan terperinci C# NullReferenceException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!