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

问题描述 投票:6回答:2

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

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

    ...
}

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

是否可以将扩展方法Require.NotNull标识为nullable检查器?

c# nullable
2个回答
4
投票

ongoing work in roslyn#36039最终允许作者以将可空信息返回给编译器的方式来注释他们的方法。当前有一些功能正在预览中,但我不知道确切的状态。

但是,我会在这里质疑您的方法:如果您在方法中所做的第一件事是针对null进行检查并有效地引发异常,则将null值传递给您的方法是有效的输入。因此,您的方法不应以可以接受null的方式进行注释。您宁愿对其进行标记,以使其不接受空值,因此编译器会正确地告诉您您在哪里使用潜在的空值调用该方法。


1
投票
没有但在此行之后,要告诉编译器:
© www.soinside.com 2019 - 2024. All rights reserved.