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 evitar parámetros nulos con tipos de referencia nulos.

Desde C# 8.0, son posibles los tipos de referencia nulos. Si están habilitados, debes agregar ? al tipo de referencia para hacerlo nulo.

Mi pregunta ahora es cómo puedo forzar que un parámetro de método que usa la palabra clave params no sea nulo.

Ejemplo:


nullable enable public void MyMethod(params int[] foo) { // foo todavía puede ser nulo // ¿Cómo puedo asegurarme de que foo no sea nulo en tiempo de compilación? } MyMethod(null); // válido, pero ¿por qué?

Otra pregunta similar podría ser: ¿Por qué params int[] foo es incluso nulo en primer lugar? Esperaría algo como params int[]? foo para hacerlo nulo. Pero con params, esto parece ser diferente.

Intenté con NotNullAttribute pero solo da una advertencia. Quiero prohibirlo por completo por el compilador.

¿Alguien sabe cómo hacerlo no nulo y quizás me pueda decir por qué params permite nulos incluso con #nullable enable?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay manera de hacer que un parámetro params sea no anulable en C# 8.0. La palabra clave params permite pasar un número variable de argumentos a un método, y el compilador siempre tratará el parámetro como anulable, incluso cuando se usa #nullable enable. El atributo NotNullAttribute se puede utilizar para emitir una advertencia cuando se pasa null, pero no evitará que el compilador permita pasar null.

Comments are closed.