.net 不正确的空引用警告

fbcarpbf  于 2023-05-23  发布在  .NET
关注(0)|答案(2)|浏览(138)

我有一个流程,其中检查一个代码和多个变量是否为空,设置一个错误消息,如果是则返回。然而,GetName上仍然会发出警告“code possible null reference argument”。我可以确定代码在这一点上不是空的。通常如何避免这种情况?

if (IsNullOrEmpty(code) || IsNullOrEmpty(order))
    errorMessage = "missing data";

if (!IsNullOrEmpty(errorMessage)) return;

var dbd = await GetName(code); // warning here
mwkjh3gx

mwkjh3gx1#

C#的空状态静态分析甚至不会考虑存储空状态的局部变量。
这个简化的代码示例演示了:

static void NonNullArg(string code) { }

string? code = Environment.GetEnvironmentVariable("MayBeNull");

bool isNull = string.IsNullOrWhiteSpace(code);

if (isNull)
{
    return;
}

NonNullArg(code);

警告CS8604“void NonNullArg(string code)”中的参数“code”的引用参数可能为null。
如果内联检查并省略变量,则警告消失:

if (string.IsNullOrWhiteSpace(code))
{
    return;
}

NonNullArg(code);
3df52oht

3df52oht2#

试试这个:

if (IsNullOrEmpty(code) || IsNullOrEmpty(order))
{
    return;
}
else
{
    var dbd = await GetName(code); // no more warning here
}

相关问题