【发布时间】:2022-04-04 07:51:38
【问题描述】:
我看过 C# 的 nullable contexts 的文档,但有一些我不明白的地方:
是否为任何代码段启用可为空的上下文只会使其在 null 可能分配给“不应为空”类型时开始显示警告?
我的印象是它会告诉编译器“我保证这不会为空,所以闭嘴。”但似乎相反? “让我知道什么时候可以为空,因为我很偏执。”?
是吗?
【问题讨论】:
-
文档似乎对此非常清楚。
#nullable只允许您选择加入新行为。它本身不会做任何事情来将事物标记为(不可)超出引用类型的可空值,然后默认为不可空值(因此您可以使用?将它们标记为可空值)。注释负责其余的工作。当可空上下文被禁用时,编译器根本不会给出任何关于可能是null的警告。 -
@JeroenMostert,如果文档清楚,我就不会问了。而且,老实说,在我看来,您似乎没有理解或阅读我的问题,因为您的评论属于一般领域,但没有表达我的意思。上下文是否只启用警告?
-
#nullable warnings只是启用警告。#nullable enable启用警告以及可为空的注释以使这些警告消失。因为这就是文档所说的字面意思,所以我会接受我没有理解你的意思。如果您将#nullable视为打开允许 进行可空性检查的功能并且与告诉编译器(自己)什么无关,也许它会有所帮助事情可以是null。特别是,打开 NRT 不会进入某种不可能出现异常的“可证明不是null模式”;设计师们的野心太大了。 -
@JeroenMostert,是的,我想最后我们互相理解了,谢谢!
标签: c# nullable nullable-reference-types