Una de las características más comunes de trabajar con programación orientada a objetos es la declaración de nuevas instancias de objetos. Algo así como esto.
List<int> newIntegerList = new List<int>(); |
La cuestión es que una de las excepciones más comunes al declarar objetos es que sus valores pueden ser nulos. Como en el siguiente ejemplo.
static void Main(string[] args) { TestingNull(null); } static void TestingNull(string text) { if (text.ToUpper() == "Probando") { //haz algo } } |
El resultado será algo como esto.

Para evitarlo, a partir de C# 8.0 contaremos con un nuevo operador que nos ayudará a reducir muchísimo la posiblidad de contar con esta excepción. Para este mismo caso lo único que debes hacer es utilizar el operador dentro el método para confirmar que puedes asignar a un valor nulo otro valor pre establecido. Algo como esto.
static void TestingNull(string text) { text ??= "Probando"; if (text.ToUpper() == "PROBANDO") { //haz algo } } |
Al hacerlo el operador identificará que tu valor recibido tiene un valor nulo y automáticamente le asignará el valor que sigue después del operador. Mira un ejemplo adicional, uno muy bueno.
static void Main(string[] args) { List<int> numbers = null; int? i = null; numbers ??= new List<int>(); numbers.Add(i ??= 17); numbers.Add(i ??= 20); Console.WriteLine(string.Join(" ", numbers)); Console.WriteLine(i); } |
Al hacer esta rutina encontrarás que el resultado es el siguiente.
¿Por qué pasa eso? Bueno, es simple, resulta que como podrás ver usaste el operador en dos ocasiones para asignar a la variable un valor esperando que este fuera nulo. Al asignar el valor 17 el resultado es el esperado. Al tratar de asignarle el valor 20 entonces el operador no responderá porque la variable ya cuenta con un valor asignado así que simplemente omitirá la asignación automática.
Considera esta nueva característica como una gran ayuda pero al igual que en el último ejercicio, por tratarse de una nueva herramienta vale la pena que la uses con moderación para ganar práctica y así acostumbrarte a saber en que momentos te conviene utilizarla y cuando al abusar puedes causar un comportamiento diferente en tu aplicación.