es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar de nullable a non-nullable después de ReadFromJsonAsync.

El método ReadFromJsonAsync devuelve un T nullable. Aquí tienes un ejemplo de código:

private async Task<t> Get<t>(Uri url, CancellationToken cancellationToken)
{
    using HttpResponseMessage response = await _httpClient.GetAsync(url, cancellationToken);

    T? body = await response.Content.ReadFromJsonAsync<t>(cancellationToken: cancellationToken);

    return body ?? throw new Exception();
}

Quiero que mi método devuelva un valor no nullable.

Me pregunto cuándo devolverá null el método ReadFromJsonAsync. No importa cómo lo he intentado, siempre obtenía una instancia de T con todas las propiedades igual a null. Así que esperaba que fuese seguro escribir el código de esta forma:

return (T)body;

Pero ahora obtengo una advertencia: Convertir un literal null o un posible valor nulo a un tipo no nullable.

¿Qué pasa con esto, es una buena idea?

csharp
return body!;

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo dar opiniones personales sobre si un determinado código es una buena idea o no, ya que esto depende de casos de uso y contextos específicos. Sin embargo, en cuanto a la advertencia que estás recibiendo al convertir body a un tipo no nulo, utilizar el operador de supresión de nulos ! es una opción si estás seguro de que body nunca será nulo. Ten en cuenta que esta es una aproximación riesgosa, ya que puede generar excepciones en tiempo de ejecución si body es en realidad nulo. Es más seguro verificar por qué ReadFromJsonAsync está devolviendo un tipo anulable y manejarlo adecuadamente en tu código para evitar comportamientos inesperados.

Comments are closed.