我看过 C# 的可空上下文 nullable contexts 文档,但有一些东西我不明白:
启用任何代码的可空上下文只会在 null 可以分配给“不应该为 null”的类型时开始显示警告吗?
我原本以为它会告诉编译器“我保证这不会是 null,所以别管它。”,但它似乎相反?“让我知道什么时候可能为空,因为我很神经质。”?
就是这样吗?
启用任何代码的可空上下文只会在 null 可以分配给“不应该为 null”的类型时开始显示警告吗?
我原本以为它会告诉编译器“我保证这不会是 null,所以别管它。”,但它似乎相反?“让我知道什么时候可能为空,因为我很神经质。”?
就是这样吗?
#nullable
只是允许您选择加入新的行为。 它本身并没有将事物标记为可空或不可空,除了参考类型默认为不可空之外(因此您可以使用?
标记它们为可空)。 注释会处理其余部分。 当禁用可空上下文时,编译器将不会对可能为null
的事物发出任何警告。 - Jeroen Mostert#nullable warnings
仅启用警告。#nullable enable
启用警告以及可空注释,从而消除这些警告。由于这正是文档所说的,我接受我没有理解您的要点。也许如果您把#nullable
视为打开允许进行可空性检查的功能,而与向编译器(单独)告知哪些内容可以为null
无关,可能会有所帮助。特别地,打开 NRTs 不会进入某种“可证明不为null
模式”,在那里异常是不可能的;设计者认为这太过雄心。 - Jeroen Mostert