将 C#8 的方法识别为可空检查器?

Mik*_*ard 7 c# nullable

我经常使用扩展方法来检查方法参数

void MyMethod(string? test)
{
    Require.NotNull(test, nameof(test));
    // Same as
    // if (test == null) throw new ArgumentNullExeception(nameof(test))

    ...
}
Run Code Online (Sandbox Code Playgroud)

nullables但是,当启用 C# 8时,编译器认为我在使用扩展方法时没有检查 null 参数。

有没有办法将扩展方法识别Require.NotNullnullable检查器?

pok*_*oke 4

roslyn#36039 中正在进行的工作最终允许作者以向编译器返回可为空信息的方式注释他们的方法。目前有一些功能处于预览状态,但我不知道\xe2\x80\x99 的确切状态。

\n\n

但是,我会在这里质疑您的方法:如果您在方法中所做的第一件事是检查 null 并有效地抛出异常,那么将 null 值传递给您的方法不是有效的输入。因此,您的方法不应以接受 null 的方式进行注释。

\n\n

您宁愿对其进行标记,使其不接受 null,这样编译器就会正确地告诉您在何处调用具有潜在 null 值的方法。

\n