C# | como palabra clave del operador – Part 1

En el desarrollo del software, el encasillamiento es algo ineludible. En muchos casos, el desarrollador necesita convertir un Objeto (Tipo) en otro Objeto (Tipo) y, a veces, puede obtener InvalidCastException. Por lo tanto, para superar este tipo de excepciones, C# proporciona una palabra clave de operador.
El operador as se usa para realizar la conversión entre tipos de referencia compatibles o tipos que aceptan valores NULL. Este operador devuelve el objeto cuando es compatible con el tipo dado y devuelve un valor nulo si la conversión no es posible en lugar de generar una excepción. El funcionamiento de as operator es bastante similar a is an operator pero de forma abreviada.
Sintaxis:
 

expression as type

La sintaxis anterior es equivalente al siguiente código. Pero la variable de expresión se evaluará solo una vez.
 

expression is type ? (type)expression : (type)null

Aquí, ‘ es ‘ es una palabra clave de operador. 
Nota: La palabra clave del operador ‘as’ en C# se usa solo para conversiones anulables, de referencia y de boxeo. No puede realizar conversiones definidas por el usuario que solo se pueden realizar mediante el uso de expresión de conversión.
Ejemplo 1: en el siguiente código, str1 contiene una string que se asigna a una variable obj1 del tipo de objeto. Ahora, este obj1 se convierte en string usando como operador y asigna el resultado del caso a la variable str2 de tipo string. Si el caso es exitoso, devuelve el resultado; de lo contrario, devuelve nulo. Aquí, if(str2 != null) se usa para verificar si el resultado es nulo o no. ParaList<string> mylist = obj1 as List<string> cast falla y devuelve nulo.
 

CSharp

// C# program to illustrate
// the use of 'as' operator
using System;
using System.Text;
using System.Collections.Generic;
 
class GFG {
     
    // Main Method
    public static void Main() {
         
        // taking a string variable
        string str1 = "GFG";
         
        // taking an Object type variable
        // assigning var1 to it
        object obj1 = str1;
         
        // now try it to cast to a string
        string str2 = obj1 as string;
         
        // checking Successfully cast or not
        if(str2 != null)
        {
            Console.WriteLine("Successfully Cast");
        }
         
        // now try to cast it to List
        List<string> mylist = obj1 as List<string>;
         
        // checking Successfully cast or not
        if(mylist != null)
        {
            Console.WriteLine("Successfully Cast");
        }
        else
        {
            Console.WriteLine("Not Successful");
        }
         
    }
}
Producción

Successfully Cast
Not Successful

Ejemplo 2: en el código, estamos tomando una array de objetos que puede almacenar cinco elementos. Los elementos primero y segundo son la instancia de la clase Geeks1 y la clase Geeks2. El tercer elemento es una string y el cuarto elemento es un valor doble y el quinto elemento es un valor nulo. Aquí, string str = obj[j] como string; estamos usando como operador para convertir la array de objetos como una string y almacenar el resultado en la string str. Después de eso, verifique el valor resultante. Si es nulo, imprima el «elemento no es una string» y, si no es nulo, imprima la string.
 

CSharp

// C# program to illustrate the
// concept of 'as' operator
using System;
 
// Classes
class Geeks1 { }
class Geeks2 { }
 
class GFG {
 
    // Main method
    static void Main()
    {
 
        // creating and initializing object array
        object[] obj = new object[5];
        obj[0] = new Geeks1();
        obj[1] = new Geeks2();
        obj[2] = "C#";
        obj[3] = 334.5;
        obj[4] = null;
 
        for (int j = 0; j < obj.Length; ++j) {
 
            // using as operator
            string str = obj[j] as string;
 
            Console.Write("{0}:", j);
 
            // checking for the result
            if (str != null) {
                Console.WriteLine("'" + str + "'");
            }
            else {
                Console.WriteLine("Is is not a string");
            }
        }
    }
}
Producción: 

0:Is is not a string
1:Is is not a string
2:'C#'
3:Is is not a string
4:Is is not a string

 

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 *