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.

¿Cómo convierto List a List en .NET 6 / C# 10?

Usando .NET 6, tengo lo siguiente:

List<string> values = new List<string?> { null, "", "value" }
  .Where(x => !String.IsNullOrEmpty(x))
  .Select(y => y)
  .ToList();

Pero recibí la advertencia:

La nulabilidad de los tipos de referencia en el valor de tipo ‘string?[]’ no coincide con el tipo de destino ‘string[]’.

Pensé que al usar

.Where(x => !String.IsNullOrEmpty(x))

se solucionaría el problema, pero no lo hace. ¿Cómo lo arreglo?</string?>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Esta advertencia se debe a que la lista se declara como List<String?>, lo que significa que puede contener valores nulos. Sin embargo, la declaración Select está proyectando a un arreglo de cadenas no nulas, lo que provoca que el compilador genere la advertencia.

    Para solucionar este problema, puedes utilizar la característica de tipos de referencia nulos introducida en C# 8.0. Simplemente agrega el símbolo ‘?’ después de ‘string’ en la declaración de la lista para indicar que puede ser nulo:

    List<String?> valores = new List<String?> { null, "", "valor" }
      .Where(x => !String.IsNullOrEmpty(x))
      .Select(y => y)
      .ToList();
    

    Esto asegurará que la lista pueda contener valores nulos y que la declaración Select proyecte a un arreglo de cadenas nulas, que coincide con la posibilidad de tener nulos en la lista.

Comments are closed.