.NET 6新特性试用 | 可空引用类型

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 6新特性试用 | 可空引用类型相关的知识,希望对你有一定的参考价值。

前言

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

那么,Nullable到底是干嘛的?

可为空上下文

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

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

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

Demo

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

static void test(string str)

    ...

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

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

如果变量可以允许有一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异常的很多错误。

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

以上是关于.NET 6新特性试用 | 可空引用类型的主要内容,如果未能解决你的问题,请参考以下文章

.NET 6新特性试用 | record struct

.NET 6新特性试用 | TryGetNonEnumeratedCount

.NET 6新特性试用 | 隐式using指令

.NET 6新特性试用 | DateOnly和TimeOnly类型

.NET 6新特性试用 | 热重载

.NET 6新特性试用 | 总结:我最喜欢的5个特性