¿Existe un atributo simple o contrato de datos que pueda asignar a un parámetro de función que impida que se pase null
en C# /. NET? Idealmente, esto también se verificaría en tiempo de compilación para asegurarse de que el literal null
no se esté utilizando en ningún lugar para ello y en tiempo de ejecución arroje ArgumentNullException
.Marcar los parámetros como NOT anulables en C# /. NET?
Actualmente escribo algo así como ...
if (null == arg)
throw new ArgumentNullException("arg");
... para todos los argumentos que espero que no sea null
.
En la misma nota, ¿existe un opuesto a Nullable<>
por lo que el siguiente sería un fracaso:
NonNullable<string> s = null; // throw some kind of exception
> Desafortunadamente, no hay nada disponible en tiempo de compilación. > ... > Sería bastante agradable tener una sintaxis del lenguaje real y soporte en no anulabilidad Estoy de acuerdo. También me gustaría ver que se produzcan errores en tiempo de compilación. – AndrewJacksonZA
@Jon, ¿no funciona "if (arg = null)" si hay un molde implícito a bool definido? Admito que puede parecer perverso, pero compila ... –
@ ThomasS.Trias: Sí, en ese caso marginal increíblemente oscuro, * combinado * con un error tipográfico, combinado con la falta de pruebas en torno a ese código, tú " d termina con un problema. En ese momento, creo que tienes problemas mayores :) –