Rumah  >  Artikel  >  pembangunan bahagian belakang  >  C# Rentetan Boleh Null

C# Rentetan Boleh Null

WBOY
WBOYasal
2024-09-03 15:22:04567semak imbas

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 struct. Jenis nullable hanya boleh digunakan dengan jenis nilai, bukan jenis rujukan. Jadi, kita tidak boleh menggunakan nullable dengan rentetan. Kita boleh menyimpan nullable dan bukannya jenis rujukan untuk menyimpan nilai null.

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 struct akan menetapkan null kepada jenis nilai. Sintaksnya adalah seperti berikut:

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.

Bagaimana untuk bekerja dengan jenis Nullable dan rentetan null dalam C#?

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 di mana T mewakili jenis nilai jenis data. Contohnya, dalam apungan jenis nullable, kita boleh menyimpan 'true,' 'false' dan 'null.' Kita boleh memahami perkara ini dengan pernyataan yang diberikan di bawah:

//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 C# Nullable String

Contoh yang berbeza dinyatakan di bawah:

Contoh #1

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:

C# Rentetan Boleh Null

Contoh #2

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:

C# Rentetan Boleh Null

Contoh #3

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:

C# Rentetan Boleh Null

Kesimpulan

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 struktur.

Atas ialah kandungan terperinci C# Rentetan Boleh Null. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:C# Kebocoran MemoriArtikel seterusnya:C# Kebocoran Memori