在C# 中不能為變數分配null 值,因此為了克服這個問題,C# 提供了一個特殊功能,它將null 值分配給稱為可空類型的變量,並且它不適用於引用類型,因為null value 已經存在,它僅適用於可為null 的類型,該類型是System.Nullable
文法:
Nullable<data_type> variable_name = null;
以上語法表示 C# 中可為 null 的資料型態。關鍵字 nullable 表示可空類型,它是 System.Nullable
這個語法還有一個捷徑,其中涉及?運算符以及資料類型如下所述:
data_type? variable_name = null;
以上語法表示 C# 中可為 null 的資料型態。這 ?標記符號表示可為空白類型。 Data type 表示變數的資料類型,其中variable_name 表示變數的名稱,並為其賦予空值。
null 的值小於任何值;因此比較運算子不能與 null 一起使用,因此我們使用可為 null 的靜態類別。它被視為可空類型的輔助類別。可空靜態類別提供 GetUnderlyingType 方法。此方法傳回可空類型的類型參數。
原始資料型別是值型,例如數字。值類型儲存在堆疊中,並由 .NET 框架隱式初始化為其預設值,即使它們在定義時未明確初始化也是如此。例如,整數值預設初始化為零;布林值預設初始化為 false 等等。同樣,所有值類型都表示預設值。它們都不能表示在資料庫應用程式中非常重要的空值,並且表示空值在此類應用程式中很重要。選擇表示空值的任何值可能不屬於該值的資料類型允許的值範圍。例如,如果我們選擇 -1 來表示某個值類型的 null,則 -1 可能不是該資料類型允許的值。還應確保如果選擇某個值來表示應用程式中的空值,則該值不得在應用程式中的其他位置用於任何其他目的。為了解決這個問題,C# 2.0 提供了可空型別。系統的結構。 Nullable 如下,可用來定義可空型別:
代碼:
namespace System { public struct Nullable : System.IComparable, System.INullableValue { public Nullable(T value); public static explicit operator T(T? value); public static implicit operator T?(T value); public T Value { get; } public bool HasValue { get; } public T GetValueOrDefault(); } }
這裡T代表值型,結構體接受一個參數。任何值都可以使用語法定義為可空類型。
文法:
System.Nullable<data_type> variable_name = null;
以下是 C# Nullable 的範例。
C# 程式來說明當沒有為變數賦值時可空型別
Code:
using System; public class Geeks { //Defining Main Method public static void Main(string[] args) { // Nullable type is defined Nullable<int> a = null; // We use the method GetValueOrDefault(), the default value is 0 Console.WriteLine(a.GetValueOrDefault()); // Nullable type is defined int? b = null; //We use the method GetValueOrDefault(), the default value is 0 Console.WriteLine(b.GetValueOrDefault()); // non-nullable is defined using nullable type syntax int? a1 = 200; // We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned Console.WriteLine(a1.GetValueOrDefault()); // non-nullable is defined using nullable type syntax Nullable<int> b1 = 10; // We use the method GetValueOrDefault(), the default value is 0 but the value that is assigned to the variable is returned Console.WriteLine(b1.GetValueOrDefault()); } }
The output of the above code is shown in the snapshot below:
Output:
C# program using nullable type to illustrate the use of nullable.HasValue method.
Code:
using System; public class GFG { //Defining Main Method public static void Main() { // defining the variable m as a nullable type Nullable<int> m = 100; // the value of the variable m is checked Console.WriteLine(m.HasValue); // defining the variable n as a nullable type and assigned a value to it Nullable<int> n = null; // check the value of object Console.WriteLine(n.HasValue); } }
The output of the above code is shown in the snapshot below:
Output:
In this tutorial, we understand the concept of nullable type in C# through definition and then understand the working of nullable type in C#. Then we understand different C# programs using nullable type and their working with their output snapshots included with the programs’ results.
以上是C# 可空的詳細內容。更多資訊請關注PHP中文網其他相關文章!