Operador de asignación de fusión nula en C# 8.0

C# 8.0 ha introducido un nuevo operador que se conoce como operador de asignación de fusión nula ( ??= ). Este operador se utiliza para asignar el valor de su operando de la derecha a su operando de la izquierda, solo si el valor del operando de la izquierda es nulo. Si el operando de la izquierda se evalúa como no nulo, entonces este operador no evalúa su operando de la derecha.

Sintaxis:

p ??= q

Aquí, p es el operando izquierdo y q es el operando derecho del operador ??=. Si el valor de p es nulo, entonces el operador ??= asigna el valor de q en p. O si el valor de p no es nulo, entonces no evalúa q.

Puntos importantes:

  • El operando de la izquierda del operador ??= debe ser una variable, una propiedad o un elemento indexador.
  • Es asociativo por la derecha.
  • No puede sobrecargar el operador ??=.
  • Puede usar el operador ??= con tipos de referencia y tipos de valor.

    Ejemplo:

    // C# program to illustrate how to use 
    // ??= operator with value types and 
    // reference types
    using System;
       
    namespace example {
       
    class GFG {
       
        static void Main(string[] args)
        {
       
            // Reference types
            string item_1 = null;
            string item_2 = null;
            string item_4 = "GeeksforGeeks";
            string item_5 = "GFG";
       
            // Using ??= operator
            item_1 = item_1 ??= item_4;
            string item_6 = item_2 ??= item_5;
       
            Console.WriteLine("Value of item_1 is: {0}\n"+
               "Value of item_6 is:{1}", item_1, item_6);
       
            // Value types
            int ? ele_1 = null;
       
            GFG obj = new GFG();
       
            // Using ??= operator assigns
            // the value of ele_1
            // And also you are allowed to 
            // use method with ??= operator
            ele_1 = ele_1 ??= obj.Add(10, 30);
            Console.WriteLine("Value of ele_1 is {0}", ele_1);
        }
       
        // Method
        public int Add(int a, int b)
        {
            int result = a + b;
            return result;
        }
    }
    }

    Producción:

    Value of item_1 is: GeeksforGeeks
    Value of item_6 is:GFG
    Value of ele_1 is 40
    
  • Con la ayuda del operador ??= puede eliminar muchas condiciones «if-else» redundantes y hacer que su código sea más compacto y legible. Como se muestra en el siguiente ejemplo:

    Ejemplo:

    // C# program to illustrate how to use
    // ??= operator to remove if statements
    using System;
       
    namespace example {
       
    class GFG {
          
        // Main Method
        static void Main(string[] args)
        {
            // Nullable variable
            int ? element = null;
       
            // Checking the element is null or not
            if (element is null) {
                  
                // Assign a new value to the element
                // Using ??= operator
                int ? new_element = element ??= 400;
                Console.WriteLine("Element is null. "+
                 "So the new element is: {0}", new_element);
            }
        }
    }
    }

    Producción:

    Element is null. So the new element is: 400
    

    // C# program to illustrate how to use
    // ??= operator to remove if statements
    using System;
       
    namespace example {
       
    class Program {
        static void Main(string[] args)
        {
            // Nullable variable
            int ? element = null;
       
            // Using ??= operator
            // Assign values to the null variable
            element ??= 400;
            Console.WriteLine("Element is: {0}", element);
        }
    }
    }

    Producción:

    Element is: 400
  • También puede usar el operador ??= como una string anidada. Hace que su código sea más legible.

    Ejemplo:

    // C# program to illustrate 
    // how to nest ??= operator
    using System;
       
    namespace example {
       
    class GFG {
          
        // Main Method
        static void Main(string[] args)
        {
            // Nullable variables
            int ? ele1 = null;
            int ? ele2 = null;
            int ? ele3 = 45;
       
            // Using Nested ??= operator
            int ? result = ele1 ??= ele2 ??= ele3;
              
            Console.WriteLine("Element is: {0}", result);
        }
    }
    }

    Producción:

    Element is: 45

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *