如何在 C# 中使用可空类型

一.介绍

Nullable 是 C# 中的一个术语,它允许表单拥有一个额外的值 null。在本文中,我们将学习如何在 C# 中使用 Nullable 类型。

在 C# 中,我们有两种主要的数据类型:值和引用。我们不能直接将空值分配给值数据类型。在这种情况下,C# 2.0 为我们提供了可空类型,用于将值数据类型分配给空值。

二.什么是可空类型?

如上所述,Nullable 类型用于将空值分配给值数据类型。这意味着我们可以将空值直接分配给值数据类型的变量。我们可以使用 Nullable 声明空值,其中 T 是 int、float、bool 等类型。

可空类型在 C# 中扩展了基础数据类型的值域,使其不仅可以包含该数据类型的所有有效值,还可以包含一个额外的 null 值。这对于需要表示“缺失”或“未定义”值的场景非常有用。

例如,int 类型的值域是从 -2147483648 到 2147483647,而 int?(即 Nullable)可以包含所有这些值以及一个额外的 null 值。

三.如何声明可空类型

有两种方法可以声明可空类型。

Nullable<int> example;

或者

int? Example;

四.可空类型的属性

可空类型有两个属性:HasValue、Value。

HasValue

此属性根据 Nullable 变量是否有值返回一个 bool 值。如果变量有值,则返回 true;否则,如果变量没有值或为 null,则返回 false。

Nullable<int> a = null;
Console.WriteLine(a.HasValue); // 输出 False
Nullable<int> b = 9;
Console.WriteLine(b.HasValue); // 输出 True

Value

该属性给出 Nullable 类型变量的值。如果变量有值,则返回该值;否则,当变量值为 null 时,将抛出运行时 InvalidOperationException 异常。

Nullable<int> a = null;
Console.WriteLine(a.Value);//输出“InvalidOperationException”类型的运行时异常

Nullable b = 9;
Console.WriteLine(b.Value); //输出 9

五.可空类型的方法

GetValueOrDefault()

此方法如果值不为 null,则返回 Nullable 类型变量的实际赋值,如果变量值为 null,则给出该数据类型的默认值。以下是示例代码

Nullable<int> a = 9;
Console.WriteLine(a.GetValueOrDefault()); // 、输出 9
Nullable<int> a = null;
Console.WriteLine(a.GetValueOrDefault()); //输出 0

六.使用可空类型的规则

要将 Nullable 类型用作局部变量,应先声明它,并且初始化,否则会出现编译时错误。此规则与值数据类型类似。

int? b;
Console.WriteLine(b.Value); //编译出错提示'use of unassigned local variable b'

如果 Nullable 变量是类中的一个属性,之后,如果我们访问该 Nullable 变量,则不会出现任何错误,因为在类变量中,它会自动声明为 null。

class Test
{
     public int? B;
}
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(new Test().B); //不会编译出错
    }
}

七.空合并运算符(??)

我们不能直接将可空类型变量的值赋给非可空类型变量。如下例所示,如果我们尝试赋值,将会出现编译时错误。

int? a = 10;
int b = a;//编译出错提示`Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)`

注意。我们可以将比较运算符 == 和 != 运算符与可空类型变量和非可空类型变量一起使用。

对于可空变量,我们可以使用空合并运算符 (??) 来检查变量值是否为空。然后,我们可以根据该值分配非可空类型变量值。当我们在运行时不确定该可空变量的值是否根据我们的逻辑更改时,可以使用此运算符。以下是一个例子

int? a=null;
int b=a?? 10;
Console.WriteLine(b);  // 输出 10

在上面的例子中,如果变量 a 的值为 null,则会将值 10 赋给变量 b。在这种情况下,b 被赋值为 10,打印的值也将是 10。

结论
在本文中,我们讨论了 Nullable 类型及其属性和方法。使用 Nullable 类型的主要优点是,我们可以使用此类型将 Null 值存储在数据库的列中。

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢.锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值