错误 CS0165 使用未分配的局部变量 'json'

Error CS0165 Use of unassigned local variable 'json'

我正在尝试使用键 Correlation-ContextHttpContext 获取值,但我不确定为什么在尝试使用变量 json 时出现错误。

internal static CorrelationContext GetCorrelationContext(this IHttpContextAccessor accessor)
{
    return accessor.HttpContext?.Request.Headers.TryGetValue("Correlation-Context", out var json) is true
    ? JsonConvert.DeserializeObject<CorrelationContext>(json.FirstOrDefault())
    : null;
}

我得到的错误是:

Error   CS0165  Use of unassigned local variable 'json' 

我正在使用net 5.0

的目标框架

虽然这对我们来说很明显,但我认为编译器理解如果 HttpContextnull 则语句将计算为 false 有点太复杂了。

您可以通过移动添加空检查而不是使用 ?.:

来修复您的方法
internal static CorrelationContext GetCorrelationContext(this IHttpContextAccessor accessor)
{
    if (accessor.HttpContext == null)
    {
        return null;
    }

    return accessor.HttpContext.Request.Headers.TryGetValue("Correlation-Context", out var json)
        ? JsonConvert.DeserializeObject<CorrelationContext>(json.FirstOrDefault())
        : null;
}