Rumah > Artikel > pembangunan bahagian belakang > C# Rentetan Boleh Null
Dalam C#, dua jenis pembolehubah wujud jenis nilai dan jenis rujukan. Pembolehubah jenis nilai tidak boleh diberikan null, manakala kita boleh menetapkan null kepada pembolehubah jenis rujukan. Oleh kerana rentetan adalah jenis rujukan, ia boleh menjadi batal. Dalam topik ini, kita akan belajar tentang C# Nullable String.
Untuk menetapkan null kepada jenis nilai, kita perlu menggunakan Nullable
Sintaks dengan Penjelasan
Sintaks untuk menetapkan null kepada pembolehubah rentetan adalah seperti berikut:
string str = null;
Di sini, str ialah pembolehubah rentetan jenis dan 'null' ialah kata kunci yang digunakan untuk menentukan nilai nol. Dalam pernyataan di atas, kami secara langsung menetapkan null kepada rentetan kerana ia adalah jenis rujukan dan boleh memegang nilai nol.
Nullable
Nullable<dataType> variableName = null;
Cara lain untuk menggunakan jenis Nullable adalah seperti berikut:
dataType? variableName = null;
DataType ialah dua penyataan di atas ialah sebarang jenis data jenis nilai dan variableName ialah nama yang ditentukan pengguna yang diberikan kepada pembolehubah.
Jenis nullable dalam C# memberikan nilai nol kepada pembolehubah jenis nilai seperti jenis int, float, bool, dll., kerana ia tidak boleh menyimpan nilai nol. Sebaliknya, kita tidak boleh menggunakan nullable dengan rentetan atau mana-mana pembolehubah jenis rujukan lain kerana ia boleh menyimpan nilai null secara langsung.
Jenis nullable hanyalah contoh Sistem struct.Nullable
//penyataan di bawah adalah sah kerana kita boleh menyimpan null dalam nullable bool
Nullable<bool> boolVal = null;
//penyataan di bawah tidak sah kerana kami tidak boleh menyimpan null dalam pembolehubah jenis bool
bool boolVal = null;
Apabila kita menggunakan penyataan di atas, kita akan mendapat ralat mengatakan, ‘Tidak boleh menukar null kepada bool kerana ia adalah jenis nilai yang tidak boleh dibatalkan.’
Cara lain untuk mencipta jenis nullable adalah dengan menggunakan operator ‘?’, seperti yang ditunjukkan di bawah:
bool? boolVal = null;
Kini, untuk mengakses nilai jenis nullable, kita perlu menggunakan kaedah GetValueOrDefault(). Dengan bantuan kaedah ini, kita akan mendapat nilai asal yang ditetapkan jika nilai itu bukan nol. Sebaliknya, jika nilainya nol, kita akan mendapat nilai lalai sifar.
Selain itu, kita boleh menggunakan Nullable.HasValue untuk menyemak sama ada objek telah diberikan nilai atau tidak. Jika objek telah diberikan nilai, ia akan kembali benar jika objek tidak mengandungi sebarang nilai.
Kami tidak boleh menggunakan jenis nullable dengan 'var' dan kami tidak boleh mempunyai jenis nullable bersarang; ia akan memberi kita ralat masa kompilasi.
Sekarang, mari kita bercakap tentang rentetan null dalam C#. Kita boleh terus memberikan null kepada rentetan dalam C# dan menetapkan rentetan dengan 'string. Kosongkan medan baca sahaja, yang menunjukkan bahawa rentetan itu kosong.
Kami tidak boleh memanggil sebarang kaedah pada rentetan nol dan tidak boleh menggunakan sebarang sifat rentetan pada rentetan null, sedangkan kita boleh melakukan perkara yang sama dengan rentetan kosong. Sebagai contoh, jika kita akan menyemak panjang rentetan kosong menggunakan rentetan. Sifat panjang, maka kita akan mendapat hasil sebagai sifar, manakala jika kita menyemak panjang rentetan nol, maka kita akan mendapat pengecualian runtime yang mengatakan 'System.NullReferenceException: Rujukan objek tidak ditetapkan kepada contoh objek. Kami akan mendapat pengecualian yang sama apabila kami cuba memanggil sebarang kaedah rentetan pada rentetan nol. Ini kerana rentetan nol bukan contoh Sistem. rentetan. Kita boleh memahami perkara ini dengan bantuan pernyataan berikut:
Contoh untuk rentetan kosong:
string str = string.Empty; int a = str.Length; //the result of this statement will be zero
Contoh untuk rentetan nol:
string str = null; int a = str.Length; //this statement will give NullReferenceException
Contoh yang berbeza dinyatakan di bawah:
Contoh yang menunjukkan cara mencipta jenis boleh batal.
Kod:
using System; namespace ConsoleApp4 { public class Program { public static void Main() { try { //defining nullable type for int Nullable<int> intVal1 = null; int result1; Nullable<int> intVal2 = 53; int result2; //using GetValueOrDefault() //to get value from nullable type result1 = intVal1.GetValueOrDefault(); result2 = intVal2.GetValueOrDefault(); Console.WriteLine("Integer having null: {0}", result1); Console.WriteLine("Integer having value: {0}", result2); } catch(Exception exception) { Console.WriteLine(exception.Message); Console.ReadLine(); } Console.ReadLine(); } } }
Output:
Sebagai contoh, ia mencipta jenis nullable menggunakan operator ‘?’ dan menyemak sama ada ia mengandungi nilai atau tidak menggunakan HasValue.
Kod:
using System; public class Program { public static void Main() { try { //defining nullable type //using '?' operator int? intVal1 = null; bool result1; int? intVal2 = 53; bool result2; //using HasValue to check // if the object has been assigned a value or not result1 = intVal1.HasValue; result2 = intVal2.HasValue; Console.WriteLine("Integer having null: {0}", result1); Console.WriteLine("Integer having value: {0}", result2); } catch (Exception exception) { Console.WriteLine(exception.Message); Console.ReadLine(); } Console.ReadLine(); } }
Output:
Contoh untuk menyemak sama ada rentetan adalah batal, kosong atau mengandungi nilai menggunakan kaedah IsNullOrEmpty().
Kod:
using System; public class Program { public static void Main() { string str1 = null; string str2 = string.Empty; string str3 = "Learning C#"; Console.WriteLine("str1 is null or empty: {0}", string.IsNullOrEmpty(str1)); Console.WriteLine("str2 is null or empty: {0}", string.IsNullOrEmpty(str2)); Console.WriteLine("str3 is null or empty: {0}", string.IsNullOrEmpty(str3)); Console.ReadLine(); } }
Output:
Dalam C#, pembolehubah jenis nilai seperti pembolehubah jenis int, float, bool, double, dll., tidak boleh menyimpan nilai nol, manakala pembolehubah jenis rujukan seperti rentetan boleh menyimpan nilai nol. Untuk menyimpan nilai nol dalam pembolehubah jenis nilai, kita boleh menggunakan Nullable
Atas ialah kandungan terperinci C# Rentetan Boleh Null. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!