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