.net 6.0新特性 可空引用类型

前言

在查看《隐式using指令》功能时,我们在csproj中发现这样一个属性:

.net 6.0新特性 可空引用类型

那么,Nullable到底是干嘛的?

可为空上下文

严格来说,这不是新特性,而是C# 8.0引入的特性之一。该特性用于指示引用类型是否接受null值:

.net 6.0新特性 可空引用类型

只是在.NET 6以前,该特性默认是禁用的,你可以在VS2019中手工启用:

.net 6.0新特性 可空引用类型

当启用该特性时,对于不接受null值的引用类型有可能收到null时,将出现警告消息。

Demo

假设有下列方法,接受一个字符串类型(引用类型)的参数:

static void test(string str)
{
    ...
}

如果在运行时对其传入null值,则会引发System.NullReferenceException异常:

.net 6.0新特性 可空引用类型

而现在,在代码编辑器中,你将看到黄色波浪线,告诉你使用了不允许的空引用类型:

.net 6.0新特性 可空引用类型

如果变量可以允许有一null值,那么只需添加一个"?":

static void test(string? str)
{
    Console.WriteLine(str?.Length);
}

此外,你还可使用指令在源代码的任何位置设置,明确当前文件是否使用可为空上下文:

  • #nullable enable:将可为空注释上下文和可为空警告上下文设置为“已启用”。
  • #nullable disable:将可为空注释上下文和可为空警告上下文设置为“已禁用”。
  • #nullable restore:将可为空注释上下文和可为空警告上下文还原到项目设置。
  • #nullable disable warnings:将可为空警告上下文设置为“已禁用”。
  • #nullable enable warnings:将可为空警告上下文设置为“已启用”。
  • #nullable restore warnings:将可为空警告上下文还原到项目设置。
  • #nullable disable annotations:将可为空注释上下文设置为“禁用”。
  • #nullable enable annotations:将可为空注释上下文设置为“启用”。
  • #nullable restore annotations:将注释警告上下文还原到项目设置。

结论

默认开启Nullable,好处就是在开发的时候,会不断的验证引用类型实例是否可为null,避免了引发NullReferenceException异常的很多错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论