¿Alguna vez te molesta la Excepción de Referencia Nula, cuando un objeto que falló en la inicialización regresa para vengarse? Hay muchos beneficios al tener las revisiones de nulos en sus programas, no sólo para una mejor legibilidad sino también para asegurar que el programa no termine debido a problemas de memoria – como cuando una variable no existe en la memoria. Esto puede ir en contra de la seguridad de sus programas y de las buenas pautas de UI y UX que tienen sus equipos. La mayoría de las veces, se plantea una excepción nula debido a esto:
123 nombre de la cadena =nulo;Consola.WriteLine(nombre);
csharp

En la mayoría de los casos, el compilador en sí no continuará hasta que se arregle esto, pero si de alguna manera se logra engañar al compilador para que piense que la variable tiene un valor pero en el tiempo de ejecución no lo tiene, aparecerá una excepción de referencia nula. Para superar esto, puedes hacer lo siguiente:
123456 nombre de la cadena =nulo;// Intenta introducir el valor, desde algún lugarif(nombre !=nulo){ Consola.WriteLine(nombre);}
csharp
Este chequeo seguro asegurará que el valor esté disponible cuando se llame a esta variable. De lo contrario, se moverá en otra dirección y se alejará del camino de los bichos. En C# 6 sin embargo, hay otra forma de superar este error. Considere un escenario en el que su base de datos fue configurada, su tabla de datos fue configurada, su persona fue encontrada, pero sus detalles de empleo no fueron encontrados. ¿Puedes conseguir la empresa donde trabajaban?
1var company = DbHelper.PeopleTable.Find(x = ); x.id == id).FirstOrDefault().EmploymentHistory.CompanyName;// Error
csharp
Si lo hizo, habrá un error porque sólo pudimos subir unos pocos pasos en la lista de estos valores. Entonces terminamos golpeando un valor nulo y todo se perdió. C# 6 ideó una nueva forma de superar estos casos, utilizando un operador de navegación segura después de los valores y campos que pueden ser nulos… Como este:
1var company = DbHelper?.PeopleTable?.Find(x = ); x.id == id)?.FirstOrDefault()?.EmploymentHistory?.CompanyName;// Works
csharp
Este código sólo comprobará el siguiente valor si el anterior no era nulo. Si el valor anterior era nulo, devolverá nulo y guardará el nulo como valor para la empresa, en lugar de tirar el error. Esto puede resultar útil cuando se dejan las comprobaciones al propio marco, pero, sin embargo, todavía hay que comprobar al final si el resto de los valores son nulos o no.
12345var company = DbHelper.PeopleTable?.Find(x = ); x.id == id)?.FirstOrDefault()?.EmploymentHistory?.CompanyName;if(company !=null){// Proceso final}
csharp
Pero entiendes, en lugar de escribir el código y comprobar que todo es nulo, puedes hacer un simple chequeo y realizar las acciones y lógicas que quieras en tus programas. De lo contrario, habría que intentar… atrapar la envoltura o múltiples si… si no, bloques para controlar cómo su programa navega en el sistema.