Compartir a través de


as (Referencia de C#)

Puede utilizar el operador de as para realizar algunos tipos de conversiones entre los tipos de referencia compatibles o tipos que aceptan valores NULL. El siguiente fragmento de código muestra un ejemplo.

   class csrefKeywordsOperators
   {
       class Base
       {
           public override string  ToString()
           {
                 return "Base";
           }
       }
       class Derived : Base 
       { }

       class Program
       {
           static void Main()
           {

               Derived d = new Derived();

               Base b = d as Base;
               if (b != null)
               {
                   Console.WriteLine(b.ToString());
               }

           }
       }
   }

Comentarios

El operador as es como una operación de conversión de tipos. Sin embargo, si la conversión no es posible, as devuelve null en lugar de producir una excepción. Considere el ejemplo siguiente:

expression as type

El código es equivalente a la siguiente expresión salvo que la variable de expression se evalúan sólo una vez.

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

Observe que el operador de as realiza sólo conversiones de referencia, conversiones que acepta valores NULL, y conversiones boxing. El operador de as no puede realizar otras conversiones, como conversiones definidas por el usuario, que deben en su lugar realizar mediante expresiones de conversión.

Ejemplo

class ClassA { }
class ClassB { }

class MainClass
{
    static void Main()
    {
        object[] objArray = new object[6];
        objArray[0] = new ClassA();
        objArray[1] = new ClassB();
        objArray[2] = "hello";
        objArray[3] = 123;
        objArray[4] = 123.4;
        objArray[5] = null;

        for (int i = 0; i < objArray.Length; ++i)
        {
            string s = objArray[i] as string;
            Console.Write("{0}:", i);
            if (s != null)
            {
                Console.WriteLine("'" + s + "'");
            }
            else
            {
                Console.WriteLine("not a string");
            }
        }
    }
}
/*
Output:
0:not a string
1:not a string
2:'hello'
3:not a string
4:not a string
5:not a string
*/

Especificación del lenguaje C#

Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también

Referencia

Palabras clave de C#

is (Referencia de C#)

Operador ?: (Referencia de C#)

Palabras clave de operadores (Referencia de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#