Nunca me han gustado los parámetros opcionales. Vale, están muy bien para hacer interop con COM, especialmente con Office y todo eso. Pero fuera de ahí, mucho cuidado con el uso que les damos. Porque, sin que se nos avise de nada, puede que nos encontremos con problemas por haberlos usado. Como se comenta en este artículo, usar parámetros opcionales en métodos provoca estos dos problemas:
- No podrás usar el método en una expresión lambda. Olvídate de hacer x => x.Foo() cuando el método Foo tiene parámetros opcionales. Noooooooo!
- El valor por defecto se compila en el código del llamador, no el código del método que declara el parámetro. Por lo que si estamos creando una librería para uso de terceros, si de repente cambiamos un método y agregamos parámetros opcionales, ya no bastará con que reemplacen nuestra librería por la nueva versión, se verán obligados a recompilar sus librerías para poder usar la nuestra.
Esto mismo pasa con los parámetros opcionales de Visual Basic, que fueron creados en 2002, dado que dado que C# y Visual Basic comparten la misma implementación de parámetros opcionales.
Larga vida a las sobrecargas.
Iñaki Elcoro





Enviar comentarios