上一篇: C# 方法

下一篇: C# 数组(Array)

C# 可空类型

在 C# 中,值类型(如 int, double, bool 等)默认情况下不允许包含 null 值。然而,在某些情况下,您可能希望表示一个值类型没有被赋予具体的值。为了解决这个问题,C# 引入了可空类型(Nullable Types),它允许值类型变量接受 null 值。本教程将向您介绍如何在 C# 中使用可空类型。

定义可空类型

要定义一个可空类型变量,您可以在对应的值类型后面添加问号 ? 进行声明。例如:

                int? nullableInt;
                double? nullableDouble;
                bool? nullableBool;
                

也可以通过显式地使用 Nullable<T> 结构来创建可空类型,其中 T 是相应的值类型。

                Nullable<int> nullableInt;
                Nullable<double> nullableDouble;
                Nullable<bool> nullableBool;
                

现在,您可以将 null 赋给这些变量:

                nullableInt = null;
                nullableDouble = null;
                nullableBool = null;
                

访问可空类型的值

当您需要访问可空类型变量的值时,可以使用 ValueGetValueOrDefault() 方法。但在访问之前,通常需要检查该变量是否为空(即包含 null 值),以避免引发异常。您可以使用 HasValue 属性来判断一个可空类型变量是否有值。

                int? nullableInt = 42;

                if (nullableInt.HasValue)
                {
                    Console.WriteLine("The value of nullableInt is: " + nullableInt.Value);
                }
                else
                {
                    Console.WriteLine("nullableInt has no value.");
                }
                

如果没有检查 HasValue,直接访问 Value 属性将抛出 InvalidOperationException 异常。为了避免这种情况,还可以考虑使用 GetValueOrDefault() 方法:

                int? nullableInt = null;
                int defaultValue = -1;

                Console.WriteLine("The value of nullableInt is: " + nullableInt.GetValueOrDefault(defaultValue));
                

在上面的代码中,GetValueOrDefault() 方法返回可空类型变量的值(如果存在),否则返回指定的默认值。

使用 null 合并运算符

null 合并运算符(??)是一种简洁的方式,用于在可空类型变量具有非空值时返回其值,否则返回一个默认值。以下是如何使用 null 合并运算符的示例:

                int? nullableInt = null;
                int defaultValue = -1;

                int result = nullableInt ?? defaultValue;
                Console.WriteLine("The value of nullableInt is: " + result); // 输出: The value of nullableInt is: -1
                

在这个例子中,因为 nullableIntnull,null 合并运算符返回了 defaultValue

现在,您已经了解了 C# 中可空类型的基本知识,包括如何定义可空类型、访问它们的值以及使用 null合并运算符。使用可空类型时,务必注意检查变量是否包含值,以避免出现运行时错误。在编写代码时,合理利用可空类型可以增强代码的健壮性和可读性。