C#中可以为null的类型

一、含义:

可以为null的类型,表示为该值在该类型范围中,还可以取null值。

比如:int值是-2,147,483,648 到 2,147,483,647 ,默认值是 0,不包含null值,但是int? a=null;就包含null值。

二、声明格式:

可以通过如下两种方式申明可为空的类型:

  1. System.Nullable<T> variable;
  2. T?variable;

T 是可以为 null 的类型的基础类型。 T 可以是包括 struct 在内的任意值类型;它不能是引用类型,引用类型已经支持为null。引用类型可以设置为空,表示它未初始化。

三、特征:

  1. 可以为 null 的类型表示可以向其赋值 null 的值类型变量。 

  2. 语法 T?Nullable<T> 的简写,其中 T 是值类型。 这两种形式是可互换的。

  3. 向可以为 null 的类型赋值的方法与向一般值类型赋值的方法相同,如 int? x = 10;double? d = 4.108;也能够向可以为 null 的类型赋值 nullint? x = null;

  4. 使用 Nullable<T>.GetValueOrDefault 方法可返回分配的值或基础类型的默认值(如果值为 null 的话)。例如,int j = x.GetValueOrDefault();

  5. 使用 HasValueValue 只读属性可测试是否存在 null 值并检索值,如以下示例所示:if(x.HasValue) j = x.Value;

    1. 如果变量包含值,则 HasValue 属性返回 true;如果值为 null,则返回 false

    2. 如果已赋值,则 Value 属性返回值。 否则,将会引发 System.InvalidOperationException

    3. HasValue 的默认值为 falseValue 属性没有默认值。

    4. 还能将 ==!= 运算符与可以为 null 的类型结合使用,如以下示例所示:if (x != null) y = x;

  6. 将当前值为 null 的可为 null 的类型赋值给不可为 null 的类型时,可以使用 ?? 运算符赋予默认值,例如 int? x = null; int y = x ?? -1;

  7. 不得嵌套可以为 null 的类型。 无法编译下面的一行代码:Nullable<Nullable<int>> n;

注:参考https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/nullable-types/index

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值