在C#中,變數有兩種類型:值型別和參考型別。值類型變數不能賦 null,而引用類型變數可以賦 null。由於字串是引用類型,因此它可以為 null。在本主題中,我們將學習 C# Nullable String。
要將 null 指派給值類型,我們需要使用 Nullable
文法及解釋
將 null 賦給字串變數的語法如下:
string str = null;
這裡,str是字串類型的變量,‘null’是用來指定null值的關鍵字。在上面的語句中,我們直接將 null 賦給 string,因為它是引用類型,可以保存 null 值。
可為空
Nullable<dataType> variableName = null;
Nullable 類型的另一種使用方式如下:
dataType? variableName = null;
上面兩個語句中的dataType是任意值類型資料型別,variableName是使用者給變數的自訂名稱。
C# 中的 Nullable 類型將 null 值指派給 int、float、bool 等類型的值類型變量,因為它們不能儲存 null 值。另一方面,我們不能將 nullable 與字串或任何其他引用類型變數一起使用,因為它可以直接儲存 null 值。
可空型別只不過是 struct System.Nullable
//下面的語句是有效的,因為我們可以將 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
下面提到了不同的例子:
範例展示如何建立可為 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(); } } }
輸出:
例如,它使用「?」運算子建立可為 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(); } }
輸出:
使用 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#中,int、float、bool、double等型別的值型別變數無法儲存空值,而string等引用型別變數可以儲存空值。要在值類型變數中儲存空值,我們可以使用 Nullable
以上是C# 可空字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!