首頁  >  文章  >  後端開發  >  C# 可空字串

C# 可空字串

WBOY
WBOY原創
2024-09-03 15:22:04631瀏覽

在C#中,變數有兩種類型:值型別和參考型別。值類型變數不能賦 null,而引用類型變數可以賦 null。由於字串是引用類型,因此它可以為 null。在本主題中,我們將學習 C# Nullable String。

要將 null 指派給值類型,我們需要使用 Nullable;結構。可空型別只能與值型別一起使用,不能與參考型別一起使用。因此,我們不能將 nullable 與字串一起使用。我們可以儲存可空值而不是引用類型來保存空值。

文法及解釋

將 null 賦給字串變數的語法如下:

string str = null;

這裡,str是字串類型的變量,‘null’是用來指定null值的關鍵字。在上面的語句中,我們直接將 null 賦給 string,因為它是引用類型,可以保存 null 值。

可為空 struct 會將 null 指派給值型別。其文法如下:

Nullable<dataType> variableName = null;

Nullable 類型的另一種使用方式如下:

dataType? variableName = null;

上面兩個語句中的dataType是任意值類型資料型別,variableName是使用者給變數的自訂名稱。

如何在 C# 中使用 Nullable 類型和 null 字串?

C# 中的 Nullable 類型將 null 值指派給 int、float、bool 等類型的值類型變量,因為它們不能儲存 null 值。另一方面,我們不能將 nullable 與字串或任何其他引用類型變數一起使用,因為它可以直接儲存 null 值。

可空型別只不過是 struct System.Nullable 的一個實例;其中 T 表示資料型別的值型別。例如,在可空類型 float 中,我們可以儲存「true」、「false」和「null」。我們可以透過下面給出的語句來理解這一點:

//下面的語句是有效的,因為我們可以將 null 儲存在可空的 bool

Nullable<bool> boolVal = null;

//下面的語句無效,因為我們不能將 null 儲存在 bool 類型的變數中

bool boolVal = null;

當我們使用上面的語句時,我們會收到一條錯誤訊息:「無法將 null 轉換為 bool,因為它是不可為 null 的值類型。」

建立可為空白類型的另一種方法是使用‘?’運算符,如下所示:

bool? boolVal = null;

現在,要存取可為空類型的值,我們需要使用 GetValueOrDefault() 方法。借助此方法,如果值不為空,我們將獲得原始分配的值。另一方面,如果值為空,我們將得到預設值零。

除此之外,我們還可以使用 Nullable.HasValue 檢查物件是否已被賦值。如果該物件已被賦值,則如果該物件不包含任何值,則傳回true。

我們不能將可空型別與「var」一起使用,也不能使用巢狀的可空型別;它會給我們一個編譯時錯誤。

現在我們來談談C#中的空字串。我們可以在C#中直接給字串賦null,用‘string. Empty’只讀字段,代表字串為空。

我們不能對空字串呼叫任何方法,也不能對空字串使用任何字串屬性,而我們可以對空字串執行相同的操作。例如,如果我們將使用字串檢查空字串的長度。 Length 屬性,那麼我們將得到的結果為零,而如果我們檢查空字串的長度,那麼我們將得到一個運行時異常,提示「System.NullReferenceException:未將物件引用設定為物件的實例」。當我們嘗試對空字串呼叫任何字串方法時,我們將得到相同的異常。這是因為空字串不是 System 的實例。細繩。我們可以藉助以下陳述來理解這一點:

空字串範例:

string str = string.Empty;
int a = str.Length; //the result of this statement will be zero

空字串範例:

string str = null;
int a = str.Length; //this statement will give NullReferenceException

C# 可空字串的範例

下面提到了不同的例子:

範例#1

範例展示如何建立可為 null 的類型。

代碼:

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();
}
}
}

輸出:

C# 可空字串

範例#2

例如,它使用「?」運算子建立可為 null 的類型,並使用 HasValue 檢查它是否包含值。

代碼:

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();
}
}

輸出:

C# 可空字串

範例 #3

使用 IsNullOrEmpty() 方法檢查字串是否為 null、空或包含值的範例。

代碼:

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();
}
}

輸出:

C# 可空字串

結論

在C#中,int、float、bool、double等型別的值型別變數無法儲存空值,而string等引用型別變數可以儲存空值。要在值類型變數中儲存空值,我們可以使用 Nullable;結構。

以上是C# 可空字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 記憶體洩漏下一篇:C# 記憶體洩漏