Error CS0165 Use of unassigned local variable 'json'

342 Views Asked by At

I am trying to get value from the HttpContext with a key Correlation-Context, but I am not sure why I am getting the error while trying to use the variable 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;
}

I am getting the error as:

Error   CS0165  Use of unassigned local variable 'json' 

I am using the target framework of net 5.0

1

There are 1 best solutions below

2
On BEST ANSWER

Although it's obvious to us, I think it's a bit too complicated for the compiler to understand that if HttpContext is null then the statement will evaluate to false.

You can fix your method by moving adding a null check and not using ?.:

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;
}