Ya hemos visto en entradas previas la importancia de las aserciones, precondiciones y postcondiciones. Entre las precondiciones, es muy común la comprobación de que un parámetro de entrada sea no nulo. Por ejemplo,
private void process(MyObject myObject) {
if (myObject == null)
throw new ArgumentNullException("myObject can't be null.");
[...]
}
Este mecanismo supone copiar y pegar código muy similar, que lo que puede ser tedioso fundamentalmente en métodos que emplean varios parámetros de entrada. Para paliar esta situación, c# 10 facilita la expresión doble admiración (!!) para la declaración de un parámetro. De esta forma, incluyendo dicha expresión al final de la declaración del parámetro, el compilador genera el código necesario para la comprobación de su valor nulo, no siendo necesario código explícito.
private void process(MyObject myObject!!) {
[...]
}