as (Referencia de C#)

El operador as se usa para realizar determinados tipos de conversiones entre tipos de referencia compatibles. Por 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. Observe la siguiente expresión:

expression as type

Es equivalente a la expresión siguiente, con la excepción de que expression se evalúa sólo una vez.

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

Debe tenerse en cuenta que el operador as solamente ejecuta conversiones de referencia y conversiones boxing. El operador as no puede realizar otras conversiones, como las definidas por el usuario, que se deben realizar con expresiones de conversión explícitas.

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, vea 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#