在 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中文网其他相关文章!